Section 1: Helm essentials
What Helm solves, and what it does not
Kubernetes applications are made of many manifests: a Deployment, a Service, a ConfigMap, maybe an HTTPRoute, a HorizontalPodAutoscaler and a ServiceAccount. Each environment needs slightly different values: replica counts, image tags, host names, resource limits. Copying and editing YAML files per environment does not scale.
Helm addresses this with three ideas.
- Charts: a package of templated manifests plus default values.
- Values: settings you supply at install time to customise the chart.
- Releases: a named installation of a chart in a namespace, with a revision history you can upgrade and roll back.
helm install shop-api ./charts/api -n shop -f values-prod.yaml
helm upgrade shop-api ./charts/api -n shop -f values-prod.yaml --set image.tag=1.6.0
helm history shop-api -n shop
helm rollback shop-api 3 -n shop
How Helm works
Helm renders templates locally by combining them with values, producing plain Kubernetes manifests. It then sends them to the API server and records the release, by default as a Secret in the release namespace. There is no server side Helm component in the cluster since Helm 3.
What Helm does not do
- It does not continuously reconcile. If someone edits a Deployment by hand, Helm will not notice until the next upgrade. GitOps tools such as Argo CD and Flux add that loop, and they can render Helm charts.
- It does not make a confusing chart understandable. Templating is powerful, and the main risk of Helm is charts so flexible that nobody can predict their output.
- It is not a secrets manager. Values files with passwords in Git are a leak waiting to happen.
Helm or Kustomize
Kustomize patches plain YAML without templates. It is excellent for your own applications with a few environment differences. Helm shines when you distribute an application to others, or when many teams install the same component with varied settings. Many teams use both: Helm for third party software and shared platform charts, Kustomize for their own small services.
Our approach
We write charts that are boring on purpose: few values, sensible defaults, and output you can read with helm template and understand at a glance.