Lesson 23 / 25
Helm, Kustomize and Plain Manifests
Choose the right tool for packaging and customising Kubernetes manifests.
Templates versus overlays
Plain manifests with kubectl apply are fine for one small app in one environment. Kustomize, built into kubectl apply -k, takes plain YAML bases and applies overlays and patches per environment, with no templating language; it is simple and transparent, but has no packaging, versioning, dependency management or release history. Helm adds parameterised templates, packaging and distribution, dependencies, lifecycle hooks and release history with rollback; the cost is Go templating, which can become hard to read. The tools combine well: Helm's --post-renderer option passes rendered output through a program such as Kustomize to patch third-party charts without forking them, and Argo CD and Flux can both use Kustomize on top of Helm output. A sensible default: install third-party software with its Helm chart, and choose either Helm or Kustomize for your own apps based on whether you need distribution and parameters or just per-environment patches.
Comparing the approaches
A quick decision aid.
need tool
-------------------------------------------- ----------------------------
install third-party software with options Helm chart from the vendor
small in-house app, per-env patches only Kustomize overlays
share an app across many teams / customers Helm chart in an OCI registry
patch a vendor chart without forking it Helm --post-renderer + Kustomize
releases with history and one-step rollback Helm (or a GitOps controller on top)A form letter versus sticky notes
Helm is a form letter with blanks to fill in for each recipient. Kustomize is a finished letter with sticky notes saying "for Mumbai office, change line 3". Both work; choose by how many variations you send out.
Quick check: Which feature does Kustomize lack compared with Helm?
- Per-environment patches
- Release history with rollback and chart packaging
- Plain YAML bases
- Integration with kubectl
Answer
Release history with rollback and chart packaging — Kustomize patches YAML but does not package charts or keep a release history.