Helm

Helm

A real application is a dozen manifests with matching values. Helm packages them.

TermMeaning
Chartthe package - templates plus default values.yaml
Repositoryweb server (or OCI registry) with charts; Artifact Hub indexes them
Releaseone installation of a chart, with a unique name
Revisionone version of a release; every upgrade adds one
graph LR R[(Repository)] --> CH[Chart + values.yaml] V[your values.yaml / --set] --> H[helm] CH --> H H -->|render templates| M[manifests] M --> K[Cluster: release rev N]

Helm is a single binary (current major: Helm 4). It uses your kubeconfig; there is no server-side component.

The commands you need

helm repo add traefik https://traefik.github.io/charts
helm repo update
helm search repo traefik
helm show values traefik/traefik | less      # the chart's interface
helm template traefik traefik/traefik -f values.yaml   # render only
helm install traefik traefik/traefik -n traefik --create-namespace -f values.yaml
helm list -A
helm upgrade traefik traefik/traefik -n traefik -f values.yaml --set deployment.replicas=2
helm history traefik -n traefik
helm rollback traefik 1 -n traefik
helm uninstall traefik -n traefik
  • helm upgrade --install is idempotent - use it in pipelines.
  • Precedence: --set beats -f; a later -f beats an earlier one.
  • Rollback creates a new revision - history is never rewritten.

A chart from the inside

mychart/
  Chart.yaml       # name, version (chart), appVersion (software)
  values.yaml      # defaults
  templates/       # Go templates -> manifests
  crds/            # installed first, never upgraded by Helm
replicas: {{ .Values.replicaCount }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"

helm create mychart gives you a working skeleton; helm lint and helm template show mistakes before the cluster does.

Note

Bitnami moved its free charts and images behind a subscription in 2025. Older tutorials that use bitnami/... no longer work unmodified.

References