TL;DR
- Helm is the CNCF Graduated (2020) package manager for Kubernetes — a chart is a templated bundle of manifests, installed and upgraded via `helm install` / `helm upgrade`.
- Originally from Deis (2015), donated to CNCF in 2018, and the de facto distribution format for almost every operator and platform tool — including the NVIDIA GPU Operator, Argo CD, Prometheus stack, and Yobibyte itself.
- Helm v3 (current major) dropped Tiller (the server-side component in v2), uses Go templates over YAML, stores release state as Kubernetes Secrets, and supports OCI registries as chart repositories.
- Often combined with Kustomize (post-render) or replaced by it depending on team preference; both compose well with Argo CD and Flux.
Anatomy of a Chart#
A Helm chart is a directory containing a Chart.yaml (metadata), a values.yaml (default configuration), a templates/ directory of Go-templated Kubernetes manifests, and optional helpers (_helpers.tpl), CRDs, and dependencies. Installing a chart renders the templates with the provided values, then sends the resulting manifests to the Kubernetes API.
mychart/
Chart.yaml # name, version, appVersion, dependencies
values.yaml # default configuration
templates/
deployment.yaml # Go-templated manifest
service.yaml
ingress.yaml
_helpers.tpl # shared template snippets
charts/ # bundled dependency charts
crds/ # CRDs installed before templatesTemplating#
Helm uses Go's text/template package with the Sprig function library. Values from values.yaml (overridable via `--set` or `-f values.yaml`) are interpolated into manifests. Control flow (`if/else`, `range`, `with`) and helpers (`include`) compose templates.
Helm's templating is famously divisive. Defenders point to its ubiquity and dependency-management story. Critics point to YAML-inside-Go-templates indentation bugs, the difficulty of debugging rendered output, and the impossibility of static analysis on a template. The truth is somewhere in between — Helm is excellent for distributing reusable, parameterised packages and merely adequate for in-house configuration.
Releases and Rollback#
Helm tracks releases — named instances of a chart installed in a namespace. Each release version is stored as a Kubernetes Secret (in v3) so multiple Helm clients see the same state. `helm rollback` reverts to a prior release. `helm upgrade` diffs the new render against the prior render and applies the change. `helm uninstall` deletes the release and its tracked resources.
OCI Registries and Distribution#
Since Helm 3.8 (2022), OCI registries (Harbor, Docker Hub, GHCR, ECR, Artifactory, GAR) can host charts directly — `helm push` and `helm install oci://...`. This replaces the older index.yaml-based HTTP repository model for new deployments and unifies chart distribution with container distribution: one registry, one auth model, one signing story (cosign).
Migrate chart repos to OCI in 2026. The auth, signing, and replication story is dramatically better than the legacy HTTP index format, and most registries already support it.
Helm vs Kustomize#
Helm and Kustomize are the two dominant Kubernetes configuration tools. Helm templates; Kustomize patches. The right answer is usually "both" — Helm for charts you distribute, Kustomize for overlays on top of those charts.
| Property | Helm | Kustomize |
|---|---|---|
| Mechanism | Go-template render | Strategic-merge patches |
| Distribution | OCI / HTTP repo | Git directories |
| Lifecycle | Stateful releases | Stateless (apply-only) |
| Versioning | First-class | By Git tag |
| Best for | Distributed packages | Per-env overlays |
| In Argo CD / Flux | Native support | Native support |
GitOps with Helm#
Helm charts work cleanly under both Argo CD and Flux. Argo CD's Application can point at a Helm chart in a Git repo or OCI registry; Flux's HelmRelease references a HelmRepository or OCIRepository. In both cases the GitOps tool renders the chart and applies the result — there is no separate `helm install` step in the deploy pipeline.
Charts in the AI Stack#
Almost everything in the cloud-native AI stack ships as a Helm chart: NVIDIA GPU Operator, KServe, KubeRay, Argo CD/Workflows, Prometheus, Grafana, cert-manager, ingress-nginx, Volcano, Kueue, Crossplane, Karpenter. Yobibyte's installer is a single umbrella Helm chart that pulls in the right subset for the customer's sovereign profile. Helm is the lingua franca of Kubernetes distribution.
References
- Helm Documentation · Helm Project
- helm on GitHub · GitHub
- CNCF Helm Project Page · CNCF