Why Helm?

The obvious question is: Why do we need Helm? Let’s find out.

Helm makes templating applications easy

A Docker image forms a template for a Docker container. You can use one Docker image to create multiple containers from it.

The same wasn’t true for Kubernetes. You can’t reuse the manifest files easily. For instance, if you have to deploy two instances of PostgreSQL, you have to duplicate your manifest files.

Helm helps you manage it using charts and variables. You just need to create a generic PostgreSQL chart and use variables to deploy different instances in the form of releases.

Helm makes the versioning of Kubernetes applications possible

Developers initially used to create Kubernetes manifests using YAML files, which they then stored in source-code repositories.

The issue with this approach is the manifest isn’t semantically versioned. A source-code repository isn’t the right place to version your releases. You should always version your releases as packages. Helm solves this problem by packaging your application in a Helm chart, which makes it possible to have multiple versions of your chart stored in the Helm repository, and you can quickly rollout or rollback a release without building from a source.

Helm makes reusing and sharing possible

For Docker images, you can share your images on DockerHub — the same wasn’t possible for Kubernetes. With public Helm repositories like Kubernetes charts, this is now possible. Public Helm repositories allow the reuse of Kubernetes applications, enable vendors to provide standard Helm charts for consumers, and make life simple for both of them.

Helm makes deploying Kubernetes applications concise

With Helm, you can run simple commands, such as helm install and helm del , to install and delete releases.

You don’t have to worry about finding the manifest files and running kubectl delete . Everything is so dynamic with Helm.

Helm makes dependency management possible

Let’s take, for example, a LAMP stack. There’s an explicit dependency of Apache on MySQL. You shouldn’t install Apache without MySQL.

With Helm, you can add a dependency of MySQL on the Apache chart to allow this to happen, something you wouldn’t be able to do with pure Kubernetes manifests.

Helm helps enforce standards

Helm allows chart developers to start with standard templates, and they customise them according to their application requirements.

Standard templates will enable them to meet the minimum standards of developing an application with Kubernetes. The manifest templates generated by Helm is of some quality, and developers learn from it.