Create your FREE Codefresh account and start making pipelines fast. Create Account

Taking Helm 3 For a Spin

3 min read

Helm is the package manager for Kubernetes. It allows you to install applications on your Kubernetes cluster in a similar manner to yum/apt for Linux distributions.

Helm introduces several familiar concepts such as:

  • Charts which are the Helm packages (like deb/rpm)
  • Helm repositories which hold charts (similar to package repos)
  • A CLI with install/upgrade/remove commands.

Helm also has several other features such as integrated testing hooks, built-in rollbacks, release history, nested packages (chart of charts, chart dependencies) that make it really powerful for the full lifecycle of a cluster application.

Helm 2 is the latest stable version of Helm and while it is production-ready, it has faced significant resistance in adoption due to two factors:

  • Helm includes some basic templating capabilities which have lead a lot of people to falsely assume that Helm is just a templating solution like kustomize, k8comp, kdeploy, ktmpl, etc.
  • Helm 2 was based on a server component (called Tiller) which was traditionally very difficult to manage and secure.

For the first point, we have already explained that Helm is not a templating solution. It is a package manager that also happens to include templating capabilities. At the moment there isn’t any other comparable solution that offers ALL capabilities of Helm. 

For the second point, the Helm team has released an Alpha version of Helm 3 that doesn’t depend on Tiller anymore!

Finally, Helm is a client only application. It uses the same RBAC security constraints as all other standard Kubernetes applications.

Helm without Tiller for non-believers

The Helm 3 executable is available at https://github.com/helm/helm/releases. I used it successfully on a brand new Kubernetes cluster running locally (Docker for desktop).

Normally with Helm 2, you are required to install Tiller using the special helm init command. Helm 2 will complain about Tiller even when you simply ask it for its version.

But with Helm 3, Tiller is a thing of the past. 

You can also ask Helm 3 to show current releases on a fully empty cluster and it will happily comply (of course showing that nothing is installed)

Using Helm 3 with Helm 2 charts

Helm 3 introduces several changes to charts which you can read in the release notes. But for the purposes of this demo, I wanted to use an unchanged Helm 2 chart with Helm 3 as this is the most probable scenario for companies that are already using Helm 2

I used the example application mentioned in the Codefresh quick start guide. You can find the source code in https://github.com/codefresh-contrib/python-flask-sample-app. It is a very simple Python application with a dockerfile and Helm chart created with Draft.

After checking out the code (feel free to use your own image in values.xml) we can install the Helm package with

We can verify the installation with both normal kubectl commands

As well as with the Helm command:

The application includes a service so it is easy to test in the browser.

Helm 3 is currently in alpha stage. It is not ready for production. But you can still download it and play with it if you want to see with your own eyes that Tiller is removed from the picture.

Kostis Kapelonis

About Kostis Kapelonis

Kostis is a software engineer/technical-writer dual class character. He lives and breathes automation, good testing practices and stress-free deployments.

Enjoy this article? Don't forget to share.

Comments

* All fields are required. Your email address will not be published.

Related Posts

Get a head start on building better pipelines!

Schedule a demo with a Codefresh expert today.