What Helm Does
- Charts — packaged templated Kubernetes manifests
- Values — override defaults per install
- Templates — Go template language for dynamic resources
- Releases — named install instances of a chart
- Rollbacks — revert to a previous release
- Dependencies — charts can depend on other charts
- Hooks — pre-install, post-upgrade lifecycle
- Repositories — share and discover charts
- OCI registry — store charts in OCI-compliant registries
Architecture
Helm 3 is a pure client-side tool (no Tiller). helm install renders the templates locally, applies manifests to the cluster via the Kubernetes API, and stores release metadata as Kubernetes Secrets. No server-side component with cluster-admin rights.
Self-Hosting
CLI tool — runs on developer workstation or CI. Charts can be hosted anywhere:
- ChartMuseum — open-source chart repo
- Harbor — container registry with Helm chart support
- GitHub Pages — via
helm repo index - Any OCI registry — Docker Hub, GHCR, ECR
Key Features
- Templated manifests
- Release tracking
- Rollback support
- Chart dependencies
- Lifecycle hooks
- Values hierarchy (CLI > values file > defaults)
- Chart testing (helm test)
- OCI registry support
- Public chart hubs (Artifact Hub)
Comparison
| Tool | Approach | Templating | Rollbacks |
|---|---|---|---|
| Helm | Template + release | Go templates | Yes |
| Kustomize | Overlay + base | No templates | Manual |
| Jsonnet | Programmable JSON | Jsonnet | Manual |
| Pulumi | Programming lang | Any language | Via state |
| Cdk8s | TypeScript/Python | Code | Via state |
FAQ
Q: Helm vs Kustomize? A: Helm is great for distributing generic software (customize via values); Kustomize handles per-environment differences (dev/stage/prod overlays). They are often combined: Helm provides defaults, Kustomize applies environment-specific patches.
Q: Templates are too complex? A: Go templates do have a learning curve. For complex logic, use the Lua-like extensions Helm 3 supports, or switch to Cue/Pulumi/Jsonnet.
Q: v2 vs v3? A: v3 removed Tiller (the server component), greatly improving security and simplicity. v2 is EOL; new projects must use v3.
Sources
- Docs: https://helm.sh/docs
- GitHub: https://github.com/helm/helm
- License: Apache 2.0