Helm Charts: The Kubernetes Package Manager Explained
Helm Charts: The Kubernetes Package Manager Explained
Helm is the package manager for Kubernetes. Instead of hand-editing a dozen YAML files per app, a chart bundles your manifests as parameterized templates — install it, upgrade it, roll it back as one unit called a release.
Table of Contents
- Install Helm
- Find and install charts
- Releases: Helm's unit of work
- Customize with values
- Upgrade, roll back, uninstall
- Writing your own chart
- Practices that keep you out of trouble
Install Helm
# macOS
brew install helm
# Or grab the binary from github.com/helm/helm/releases
helm version
You need a working kubectl context — Helm uses it to talk to your cluster. Helm 4 is the current major release; check the version-skew policy against your cluster version.
Find and install charts
Artifact Hub (artifacthub.io) is where to search for charts — it aggregates hundreds of repositories with metadata and security info. Two ways to install:
OCI registries (modern, no repo config needed):
helm install my-podinfo \
oci://ghcr.io/stefanprodan/charts/podinfo \
--version 6.11.2
Classic chart repositories:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo bitnami
helm install my-redis bitnami/redis
Preview a chart before trusting it: helm show chart oci://... and helm show values.
Releases: Helm's unit of work
helm list # what's deployed
helm status my-podinfo # details + rendered notes
helm history my-podinfo # every revision
Customize with values
Charts expose values.yaml knobs. Override at install:
helm install my-redis bitnami/redis \
--set auth.password=changeme \
--set replica.replicaCount=3
# or a file
helm install my-redis bitnami/redis -f prod-values.yaml
Upgrade, roll back, uninstall
helm upgrade my-redis bitnami/redis --set image.tag=7.4
helm rollback my-redis 1 # back to revision 1
helm uninstall my-podinfo # removes all resources + history
helm uninstall my-podinfo --keep-history # allows helm rollback later
Upgrades are diffed and rolled: Helm tracks each revision so rollbacks are a single command — the same mental model as deployments, but for the whole stack.
Writing your own chart
helm create myapp
# myapp/
# Chart.yaml # name, version, appVersion
# values.yaml # defaults
# templates/ # deployment.yaml, service.yaml, ...
Templates are Go-templated YAML: {{ .Values.replicaCount }} pulls from values. Iterate with helm template myapp ./myapp (renders without installing) and helm install --dry-run.
Practices that keep you out of trouble
- Pin chart versions (--version), never float latest.
- Keep values files in git per environment — ideally managed by GitOps (Argo CD and Flux both natively render Helm).
- Check what a chart actually creates — helm template is free due diligence.
- Set resource requests/limits — many charts ship without sane defaults.
Helm turns "apply these 15 files in the right order" into one audited, reversible unit. For anything more than a throwaway Deployment, it's the standard packaging layer.
Related Articles
Last Updated: October 2026 Author: CloudOpsGuide Team Difficulty: Intermediate Estimated Reading Time: 12 minutes