DEV Community

mkdev.me for mkdev

Posted on

Why Do You Even Need Helm?

Welcome to the Helm Lightning Course.

In this course, you will learn the basic concepts of Helm, what is it used for and, most importantly, why you might need.

This course assumes you already know what Kubernetes is, as well some of it’s primary resource types, like Pods, Deployments, Services, ConfigMaps and Secrets. If you’ve never used Kubernetes before, you will hardly benefit from this lightning course.

Helm is a package manager for Kubernetes. This description, taken from the Helm website, doesn’t really say much. Let’s look at this from the different angle.

When you deploy an application to Kubernetes, you end up with lots of YAML files - you need a YAML file for the Deployment, for the Service, for some ConfigMaps and so on, for every object that your application needs. Of. course, you could also have all of those in a single big YAML file, but that’s not the point here.

Many of those objects depend on each other in some way or another - Service finds Pods by labels, and those labels should be the same ones configured in your Deployment’s pod template. Deployment also needs to mount correct ConfigMap, and same goes for PersistentVolumes.

Quite naturally, you want to configure many, if not all, of those objects depending on the environment - staging Deployment might have different number of replicas, and production Secret for sure will have a different database password.

In addition, you also need a simple way to rollback to a previous version, and maybe execute some hooks before and after different stages of the rollout - for example, you might need to run database migrations before deploying the new release.

Helm is the tool that solves those and few other problems. It allows you to properly template your object definitions, it gives you a set of commands to manage the releases of your application and it provides some extra advanced utilities, like aforementioned hooks.

While definitely not the only tool that solves all or some of those problems, Helm became more or less a standard for packaging Kubernetes object definitions. As a result, almost every software you want to install has an existing Helm package - called chart - that simplifies both installation and updates of this software.

This is why Helm is the package manager for Kubernetes - not only due to its features, but also because of how widespread it is. In this course, we will learn how to use it.

Top comments (0)