I like Kubernetes, but sometimes it’s a bit hard to follow the evolution of its API. To keep your YAML with the correct value for
apiVersion I’m presenting you a tool named Pluto.
You can install it from the repo of the project, or on Mac with brew.
Let’s try it on our YAML files
Open the command line, go to your project and lets scan our local files.
pluto detect-files -d . NAME KIND VERSION REPLACEMENT REMOVED DEPRECATED felixconfigurations.crd.projectcalico.org CustomResourceDefinition apiextensions.k8s.io/v1beta1 apiextensions.k8s.io/v1 false true ipamblocks.crd.projectcalico.org CustomResourceDefinition apiextensions.k8s.io/v1beta1 apiextensions.k8s.io/v1 false true blockaffinities.crd.projectcalico.org CustomResourceDefinition ...
As we can see, I have some Custom resources to update.
What about our cluster?
It’s also possible to scan a remote Kubernetes cluster, Pluto will use your local kubectl configuration.
pluto detect-helm -owide NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN cert-manager/certificaterequests.cert-manager.io cert-manager CustomResourceDefinition apiextensions.k8s.io/v1beta1 apiextensions.k8s.io/v1 true v1.16.0 false v1.19.0 cert-manager/certificates.cert-manager.io cert-manager CustomResourceDefinition apiextensions.k8s.io/v1beta1 apiextensions.k8s.io/v1 true v1.16.0 false v1.19.0 ...
I have also some API to update in my cluster.
As we can see Pluto is a nice and easy to use tool. It can help to keep Kubernetes API up to date and to prepare its future evolution.
The latest versions of kubectl are throwing warnings when a version is outdated, but it’s always interesting to be able to check manually. You can also integrate Pluto in your CI/CD to prevent deploying outdated