Skip to main content
Helm is a CLI tool for packaging, configuring, and deploying applications on Kubernetes. Instead of manually applying multiple manifests, you declare the desired end state — for example, “install this application” — and Helm calculates and executes the sequence of Kubernetes API operations required to reach that state.
A dark presentation slide titled "Helm Charts" with a faint Helm logo and abstract icon on the right, and KodeKloud branding in the top-right corner.
Key concepts
  • Chart: A packaged set of Kubernetes resources and templates that describe an application.
  • Release: A deployed instance of a chart in a Kubernetes cluster.
  • Template: A text file (usually YAML) with placeholders that Helm renders into concrete Kubernetes manifests using values.
  • values.yaml: Default configuration values for the chart that feed templates.
  • Chart.yaml: Chart metadata (name, version, dependencies, etc.).
How charts work
  1. You provide configuration via values.yaml or command-line overrides.
  2. Helm renders templates by replacing placeholders with those values.
  3. Helm installs, upgrades, rolls back, or uninstalls the resulting manifests as a release in the cluster.
Example chart files Below is a minimal illustrative example showing common chart files: a Service template, a Deployment template that references values.yaml, the values.yaml file itself, and Chart.yaml metadata. service.yaml:
deployment.yaml:
values.yaml:
Chart.yaml:
Install the chart:
Render templates locally (no cluster change):
Chart.yaml — important fields
Set apiVersion: v2 for charts targeting Helm 3. Helm 3 uses apiVersion: v2 to support features like chart dependencies and the type field; using the correct apiVersion ensures Helm interprets the chart format correctly.
Dependencies example When an application needs other services (for example, WordPress needing a database), list those other charts as dependencies instead of copying manifests. This allows you to enable, disable, or configure the dependent charts via your values.yaml.
Directory layout A minimal chart directory typically looks like this:
Additional files commonly found in charts:
  • LICENSE — Chart license.
  • README.md — Human-readable documentation and usage examples.
  • charts/ — Vendored or packaged chart dependencies for offline use.
Best practices (quick)
  • Keep templates idempotent and declarative.
  • Use values.yaml for user-configurable parameters; avoid hard-coding values in templates.
  • Use helpers (in _helpers.tpl) for reusable template logic and consistent naming.
  • Version charts following semantic versioning and increment appVersion when the packaged application changes.
  • Test charts with helm lint and render templates with helm template before installing.
References This covers the essentials: what charts are, how templates and values.yaml interact, and how Chart.yaml metadata and dependencies are used. Topics such as advanced templating functions, helper templates, library charts, and CI/CD integration are outside the scope of this article.

Watch Video