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.
Conclusion
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 apiVersion
.