What the Helm!?

While introducing Kubernetes on Azure or learning and playing with Kubernetes on Azure (with VSTS or with SQL), I did mention and I used an intuitive tool covering an area which is not built-in in Kubernetes: sharing, automating, reusing, repeating my Kubernetes deployments.
Helm addresses a common user need of deploying applications to Kubernetes by making their configurations reusable. Both the Helm and Kubernetes projects have grown substantially. As Kubernetes shifts its focus to its own core in order to better manage this growth, CNCF is a great home for Helm to continue making it easier for developers and operators to streamline Kubernetes deployments. 
In my workshop about a .NET Core and SQL app with Docker/Kubernetes/OpenShift, I started to hard code some value in Kubernetes manifest files to deploy the associated Kubernetes objects: image repository/name/tag, services ports, etc. It worked, but how I could reuse these files with different names, ports, image definitions, etc.? Then by trying to be more reusable, I put in there some token variables and leverage this VSTS task to replace the tokens by the actual values. It worked, but what about local deployments or without VSTS? Helm helps me here to be more portable and consistent. Furthermore, by following the best practice to have one file per Kubernetes object definition, how I could easily deploy, upgrade, remove, etc. all of these files to manage my Kubernetes apps and objects?
That's where Helm arrives and helps to improve my workshop in a more DevOps way.

I could describe and document here my technical journey about how I integrated Helm in my project, but I won't. Instead, I will share with you these awesome resources I followed to accomplish this:

Pretty interesting and powerful, isn't it?! ;)

Note: by playing with the Helm VSTS Task, I took the opportunity to fix an issue by submitting this PR ;)

Complementary and further resources:
  • CNCF to Host Helm - No longer a sub-project under Kubernetes, Helm has been graduated as an incubation-level hosted project on June 1, 2018.
  • Helm Charts - before creating your own, leverage the official existing ones!
  • Draft - if you are new with Docker/Kubernetes/Helm, Draft could generate and manage for you, your Dockerfile, Helm Charts and their deployments!
  • Azure DevOps project - if you are new with Azure/DevOps/VSTS/Docker/Kubernetes/Helm, Azure DevOps project will generate for you all your VSTS pipeline (CI/CD), the Docker file, the Azure resources, the Helm charts, etc. for sample .NET, NodeJS, Java, Python, HTML, PHP (and more to come) app! A good starting point! By the way, it's what I "retroengineered" for my own learning and needs with Helm.

Happy Helming! Happy Sailing!


Post a Comment