Detect your Kubernetes deprecated API with pluto

Posted by

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.

Leave a Reply

Your email address will not be published. Required fields are marked *