Helm
Verified against Helm v3.18.6, flags verified via `helm <cmd> --help`, 2026-08-20 · official docs
Repos, install/upgrade/rollback, and the commands for previewing what a change would actually do before it hits a cluster.
Managing chart repositories#
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update # refresh the local index of all added repos helm repo list helm search repo postgresql # search across all added repos
Installing a release#
helm install my-release bitnami/postgresql --namespace my-app --create-namespace helm install my-release ./my-chart -f values-prod.yaml helm install my-release ./my-chart --set image.tag=v2.1.0,replicaCount=3 helm install my-release ./my-chart --version 1.4.2 # pin a specific chart version
-f values.yaml and --set key=value can both be used together — --set values win when the same key is set both ways, which makes it the standard way to override one or two values from a CI pipeline without maintaining a separate values file per environment.
Upgrading a release#
helm upgrade my-release ./my-chart -f values-prod.yaml helm upgrade --install my-release ./my-chart -f values-prod.yaml # upgrade if it exists, install if it doesn't helm upgrade my-release ./my-chart --atomic # auto-rollback the whole upgrade on failure
--install on upgrade (or the equivalent upgrade -i) is the standard pattern for idempotent CI/CD deploy scripts — one command works whether this is the first deploy or the hundredth, no separate install-vs-upgrade branching logic needed.
Previewing changes before applying#
helm install my-release ./my-chart --dry-run --debug # render manifests locally, no cluster call helm template my-release ./my-chart -f values-prod.yaml # render manifests to stdout, no release created at all helm diff upgrade my-release ./my-chart -f values-prod.yaml # requires the helm-diff plugin — shows an actual diff
helm diff is a plugin, not built into core Helm — install it with helm plugin install https://github.com/databus23/helm-diff. It's the closest thing Helm has to terraform plan: an actual before/after diff against the live cluster state, versus template/--dry-run which only show the rendered output in isolation.
Rolling back#
helm history my-release # list all revisions of a release helm rollback my-release # roll back to the previous revision helm rollback my-release 3 # roll back to a specific revision number
Listing and removing releases#
helm list --namespace my-app helm list --all-namespaces helm status my-release helm uninstall my-release --namespace my-app
Chart development helpers#
helm lint ./my-chart # catch template/schema issues before installing helm create my-new-chart # scaffold a new chart from the standard starter template helm package ./my-chart # produce a .tgz for distribution