Decision guide
Helm vs Kustomize
How should you package and customise Kubernetes manifests: Helm charts, Kustomize overlays, or both?
Side by side
| Criterion | Helm | Kustomize | Helm rendered through Kustomize |
|---|---|---|---|
| Customisation model | Values into templates | Patches on plain YAML | Values, then patches |
| Readability | Templates can get complex | Plain YAML | Two layers to understand |
| Packaging and sharing | Charts in repositories and OCI registries | Git directories / remote bases | Charts plus Git |
| Lifecycle features | Releases, rollback, hooks, dependencies | None (apply-based) | Depends on the deploying tool |
| Typical failure mode | Indentation and values typos | Patch semantics surprises | Patches breaking on chart upgrades |
When to choose each
Helm
Templated charts with values files, versioned releases, dependencies and hooks.
Choose when
- Distributing software to others (third-party style charts)
- Many configurable options
- Release history and rollback via Helm
Avoid when
- Simple in-house apps where templates add complexity
Kustomize
Plain YAML bases with overlays and patches; built into kubectl, no templates.
Choose when
- In-house services with a few per-environment differences
- Teams that want plain, reviewable YAML
- GitOps repositories
Avoid when
- Highly parameterised packages for many consumers
Helm rendered through Kustomize
Consume third-party Helm charts, then patch the rendered output with Kustomize.
Choose when
- You use vendor charts but need changes the chart doesn't expose
- GitOps with consistent post-processing
Avoid when
- When a values setting would do; patches on rendered charts break on chart upgrades
Verdict
Use Kustomize for your own services when environments differ in a few places; it keeps manifests plain and reviewable. Use Helm for software you distribute or consume from vendors, and for apps with many options. Combine them when you consume a vendor chart but need a change it doesn't expose, keeping patches minimal. In both cases, render in CI, validate with kubeconform and review the rendered diff.
Learn more
- Helm, Kustomize and GitOps with Argo CD
- Kubernetes in Production
- CI/CD & Deployment
- Restart pods automatically when configuration changes (Kubernetes)
- Manage dev, staging and prod with Kustomize overlays (Kubernetes)