Kubernetes deprecated API versions exporter CLI.
Project description
Kdave CLI
Kdave CLI can be used to check the used Kubernetes apiVersions for different sources including files, folders, charts, releases, and namespaces. You can integrate the CLI with the CI system to check the used apiVersions in the helm chart and return a warning message in the Pull request or fail the pipeline. You can control this behavior by changing the exit code with the command line options as explained below
For example, you can return a warning message in the Pull request if the helm chart has any deprecated apiVersions, the message will include the replacement apiVersion to be used. Also, you can fail the pipeline if the helm chart has any removed apiVersion or apiVersion that will be removed in the next release.
Using the CLI
kdave
CLI is available as a python package and docker image.
Using the python package
There are a few requirements when using the Python package
- Helm client should be installed and exists in the default path ($PATH).
- If it doesn't exist in the default path, you can use
--helm-binary
and provide the full path to the helm CLI.
- If it doesn't exist in the default path, you can use
- Copy
versions.yaml
in the config folder to~/.kdave
$ pip3 install kdave
$ kdave --help
Using the docker image
$ docker run --rm -v ~/.kube/config:/home/app/.kube/config aelbakry/kdave:latest --help
Commands and Command Line Options
Available commands:
check
Check deprecated or removed apiVersions for different sources
Available command line options:
--source
The full path of a file or directory
--chart
The full path of a chart
--release
The name of the release
--namespace
The name of the namespace
--tabulate
Print output in table format
--message
Print a recommendation message with the replacement apiVersion
--version
The Kubernetes version. If not provided, it defaults to the current cluster version
--helm-binary
The helm binary to be used for running helm commands. Default is helm v2
--output-dir
The output directory used to template the chart
--values
The values file used to template the chart
--format
Format the message based on its severity
--skip-dependencies
Skip building dependencies for the given chart. You can skip it if dependencies already exist in charts/ folder
--deprecated-apis-exit-code
Deprecated API versions exit code
--removed-apis-exit-code
Removed API versions exit code
--removed-apis-in-next-release-exit-code
Removed API versions in next release exit code
Examples
$ kdave check --release ingress
[INFO] 2021-07-12 14:22:58 Calling the helm command: [helm get manifest ingress]
[INFO] 2021-07-12 14:23:03 Checking the used apiVersions for release: ingress
Checking the used apiVersions:
+---------------+--------------------+-----------------------------------+---------------------------------+-------------+----------+------------------------+---------------------+------------------------------+
| Release name | Kind | API Version | Name | Deprecated | Removed | Deprecated In Version | Removed In Version | Replacement API |
+---------------+--------------------+-----------------------------------+---------------------------------+-------------+----------+------------------------+---------------------+------------------------------+
| ingress | ClusterRole | rbac.authorization.k8s.io/v1beta1 | ingress-nginx-ingress | true | false | v1.17.0 | v1.22.0 | rbac.authorization.k8s.io/v1 |
| ingress | ClusterRoleBinding | rbac.authorization.k8s.io/v1beta1 | ingress-nginx-ingress | true | false | v1.17.0 | v1.22.0 | rbac.authorization.k8s.io/v1 |
| ingress | Role | rbac.authorization.k8s.io/v1beta1 | ingress-nginx-ingress | true | false | v1.17.0 | v1.22.0 | rbac.authorization.k8s.io/v1 |
| ingress | RoleBinding | rbac.authorization.k8s.io/v1beta1 | ingress-nginx-ingress | true | false | v1.17.0 | v1.22.0 | rbac.authorization.k8s.io/v1 |
| ingress | Ingress | extensions/v1beta1 | ingress-health | true | false | v1.14.0 | v1.22.0 | networking.k8s.io/v1 |
+---------------+--------------------+-----------------------------------+---------------------------------+-------------+----------+------------------------+---------------------+------------------------------+
$ kdave check --source /tmp/metallb.yaml --message
The Deployment: metallb-controller uses the removed apiVersion: apps/v1beta2. Use apps/v1 instead.
The DaemonSet: metallb-speaker uses the removed apiVersion: apps/v1beta2. Use apps/v1 instead.
The PodSecurityPolicy: metallb-speaker uses the removed apiVersion: extensions/v1beta1. Use policy/v1beta1 instead.
$ echo $?
10
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kdave-0.2.2.tar.gz
.
File metadata
- Download URL: kdave-0.2.2.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6e432c966143aafcde3a4c0dcac1025576452c50cd95a3a0198511b0eb2ba18 |
|
MD5 | a191aedcbf2fb90feff46a892ed7d485 |
|
BLAKE2b-256 | 53ec6bd51b7c2f2ae2daa7e1e077ba73634506ee3e9d721056a2cb220fe0e77e |
File details
Details for the file kdave-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: kdave-0.2.2-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | db69784d5b663cd86a8a2264d494577187d39e0cfa3a9e684c5b11e6c6505814 |
|
MD5 | 7f9830d246da8957848e2260ebc52df3 |
|
BLAKE2b-256 | c40b9187b686674cd0bd716c9aea1a0bc441c5de8ab3cb96ddfdd1dcc5ab29c5 |