Skip to content

Introduction to Helm

As you start deploying more complex applications to your Kubernetes cluster, writing raw YAML manifests from scratch becomes incredibly repetitive and error-prone. This is where Helm comes in.

What is Helm?

Helm is often described as "the package manager for Kubernetes." Just like you use apt on Debian or brew on a Mac to install software, you use helm to install software on Kubernetes.

Instead of downloading dozens of YAML files, you can install complex applications (like a database, an Ingress Controller, or a dynamic storage provisioner) with a single command.

How does it work?

Helm uses a packaging format called Charts. A Helm Chart is essentially a collection of pre-configured Kubernetes YAML templates combined with a values.yaml file.

When you install a Chart, Helm takes the generic templates and injects your specific configurations from the values.yaml file to generate the final, customized manifests, which it then applies to the cluster.

The Workflow

  1. Add a Repository: First, you tell Helm where to find the software.

    helm repo add bitnami https://charts.bitnami.com/bitnami
    

  2. Search for a Chart:

    helm search repo bitnami/postgresql
    

  3. Install the Chart: You can install it with default values, or pass in your own values.yaml file to customize it.

    helm install my-db bitnami/postgresql -f my-values.yaml
    

Why it matters in your Homelab

In the homelab, we used Helm to deploy the nfs-subdir-external-provisioner. Instead of manually figuring out the ServiceAccounts, ClusterRoles, Deployments, and ConfigMaps required to make the provisioner work, the open-source community already did the hard work. We simply provided our NFS server's IP address and path, and Helm handled the rest!