Introduction to Helm

Helm is the package manager for Kubernetes, bundling manifests into reusable, versioned charts.

Real applications span many manifests β€” Deployments, Services, ConfigMaps, Ingresses. Managing them by hand across environments is tedious. Helm is the package manager that solves this.

Key concepts

  • A chart is a package of templated Kubernetes manifests.
  • A values file supplies the variables (image tag, replica count, hostnames) that fill the templates.
  • A release is one installed instance of a chart in your cluster.

Why teams love it

  • Install complex software (databases, ingress controllers) with one command.
  • Reuse one chart across dev, staging, and prod by swapping values.
  • Upgrade and roll back releases as versioned units.

Public charts on Artifact Hub let you deploy popular software in seconds.

Example

Example Β· bash
# Add a chart repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# Install a release, overriding a value
helm install my-db bitnami/postgresql --set auth.database=appdb

# List releases and upgrade one
helm list
helm upgrade my-db bitnami/postgresql --set primary.persistence.size=20Gi

# Roll back to a previous revision
helm rollback my-db 1

When to use it

  • A team installs the cert-manager Helm chart with a single helm install command instead of manually applying 50+ YAML manifests.
  • A developer creates a Helm chart for their microservice so that deploying to dev, staging, and production only requires changing a values.yaml file.
  • An SRE uses helm rollback to revert a broken production release to the previous chart version in under one minute.

More examples

Install a chart from a repository

Adds an official Helm repo, updates it, and installs the ingress-nginx chart into its own namespace with 2 replicas.

Example Β· bash
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.replicaCount=2

Custom values override

A production values file that overrides chart defaults: 3 replicas, pinned image tag, resource requests, and Ingress enabled.

Example Β· yaml
# values-production.yaml
replicaCount: 3
image:
  tag: v1.4.2
resources:
  requests:
    cpu: 250m
    memory: 256Mi
ingress:
  enabled: true
  host: api.example.com

Upgrade, rollback, and history

Upgrades a release with new values, inspects the revision history, and rolls back to revision 2 if the upgrade caused issues.

Example Β· bash
helm upgrade my-app ./charts/my-app -f values-production.yaml

# Check release history
helm history my-app

# Rollback to previous revision
helm rollback my-app 2

Discussion

  • Be the first to comment on this lesson.
Introduction to Helm β€” Kubernetes | SoundsCode