Skip to main content
Let’s explore Helm charts: what they are, how they work, and the key files you’ll find inside a chart.
A dark-themed presentation slide with the title "Helm Charts" on the left and a faint card-like graphic with the Helm logo on the right; the KodeKloud logo appears in the top-right corner.
Helm is a command-line tool that simplifies installing, upgrading, rolling back, and uninstalling applications on Kubernetes. As an operator you declare the desired end state (for example, “run three replicas of nginx”); Helm determines how to render templates and apply the Kubernetes API operations to reach that state. A chart is the instruction set Helm uses to produce Kubernetes manifests. A chart typically includes:
  • One or more template files that render Kubernetes resources.
  • A values.yaml file for default, configurable values.
  • A Chart.yaml file that contains chart metadata.
Templates use Helm’s templating language to consume values from values.yaml (or values supplied on the CLI) and render standard Kubernetes manifests. Example: a Service and a Deployment template in a single file. Notice the templating expression {{ .Values... }} used to inject values from values.yaml.
And a simple values.yaml that pairs with the template above:
To install this chart locally:
For additional Helm documentation and best practices, see the official Helm docs: https://helm.sh/docs/. Chart metadata — Chart.yaml Every chart contains a Chart.yaml file describing the chart. Important fields include apiVersion, name, version, appVersion, description, type, and dependencies. Below is a real-world example from a WordPress chart:
apiVersion in Chart.yaml refers to the chart API version (not the Kubernetes resource apiVersion). Use apiVersion: v2 for charts targeting Helm 3. Helm 3 charts can use newer features such as dependencies and library charts.
Chart.yaml fields — quick reference Chart directory layout A typical chart directory looks like this:
Dependencies Dependencies let you compose charts from other pre-built charts (for example, WordPress + MariaDB). Use the dependencies section in Chart.yaml to declare external charts and conditions to enable/disable them. When working with dependencies locally, use:
This command downloads or updates the charts/ directory with required dependencies so they are included at render/install time. Best practices and next steps
  • Keep values that change per-environment in values.yaml and override them with helm upgrade --install -f production-values.yaml or --set on the CLI.
  • Use helm template to render charts locally and inspect the generated Kubernetes manifests without applying them.
  • Validate rendered manifests with kubectl apply --dry-run=server -f - to ensure they are accepted by the API server.
  • Version charts independently of the application using the version field in Chart.yaml.
Useful links

Watch Video