Helm
Helm
A real application is a dozen manifests with matching values. Helm packages them.
| Term | Meaning |
|---|---|
| Chart | the package - templates plus default values.yaml |
| Repository | web server (or OCI registry) with charts; Artifact Hub indexes them |
| Release | one installation of a chart, with a unique name |
| Revision | one 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 --installis idempotent - use it in pipelines.- Precedence:
--setbeats-f; a later-fbeats 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.