Helm is a package and release manager for Kubernetes. It helps teams package, install, configure, upgrade, and roll back Kubernetes applications using reusable packages called Helm charts.
Instead of maintaining many nearly identical Kubernetes YAML files for development, testing, and production, teams can create one chart and provide different configuration values.
Version note: The current official documentation is for Helm 4.2.2. Organizations upgrading from Helm 3 should test existing charts, plugins, releases, and CI/CD pipelines before migration. citeturn182866view1turn783918search0
Why Is Helm Used?
A Kubernetes application may need several resources:
- Deployment
- Service
- ConfigMap
- Secret
- Ingress
- ServiceAccount
- PersistentVolumeClaim
Managing every file separately becomes difficult as applications and environments grow.
Helm provides:
- Reusable Kubernetes templates
- Environment-specific configuration
- Versioned application releases
- Simple upgrades and rollbacks
- Dependency management
- Consistent deployments across clusters
Important Helm Terms
Helm Chart
A chart is a package containing Kubernetes templates, default configuration, metadata, and dependencies.
Helm Release
A release is an installed instance of a chart.
For example, the same NGINX chart can create separate releases named nginx-dev and nginx-prod.
Helm Repository
A repository stores packaged charts that Helm can search and download.
OCI Registry
Modern Helm versions can also pull charts directly from OCI-compatible registries by using an oci:// address. Artifact Hub helps users discover charts from repositories and registries. citeturn182866view1
values.yaml
The values.yaml file contains a chart’s default configuration. Users can override these values through another values file or the --set option. citeturn790568search4
Helm Chart Structure
mychart/
├── Chart.yaml
├── values.yaml
├── charts/
└── templates/
Chart.yaml— Chart name, version, description, and metadatavalues.yaml— Default configurationtemplates/— Kubernetes resource templatescharts/— Chart dependencies
Helm combines the templates with supplied values and generates Kubernetes manifests. citeturn790568search7turn790568search21
Helm Prerequisites
Before using Helm, you need:
- Access to a Kubernetes cluster
- A working
kubectlconfiguration - Appropriate Kubernetes RBAC permissions
- Helm installed on your workstation or CI/CD runner
Install Helm on Linux
curl -fsSL -o get_helm.sh \
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4
chmod 700 get_helm.sh
./get_helm.sh
helm version
The official documentation recommends inspecting installation scripts before execution and verifying downloaded binaries for production environments. citeturn152160view0turn152160view2
Add and Search a Helm Repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm repo list
helm search repo bitnami/nginx
helm repo update refreshes the local chart information from configured repositories.
Install an Application
helm install web-app bitnami/nginx \
--namespace demo \
--create-namespace
In this command:
web-appis the release namebitnami/nginxis the chartdemois the Kubernetes namespace
Check the deployment:
helm list -n demo
helm status web-app -n demo
kubectl get all -n demo
Customize a Helm Chart
View the available configuration:
helm show values bitnami/nginx > values-dev.yaml
Edit values-dev.yaml, then deploy the changes:
helm upgrade --install web-app bitnami/nginx \
--namespace demo \
-f values-dev.yaml
Use separate files for each environment:
values-dev.yaml
values-staging.yaml
values-prod.yaml
This keeps one reusable chart while allowing different replica counts, resource limits, service types, domains, and image settings.
Create a Custom Helm Chart
helm create myapp
Helm generates a starter chart. Replace or modify the files inside templates/, and place configurable settings in values.yaml.
Validate the chart:
helm lint ./myapp
helm template myapp-release ./myapp
Install it:
helm install myapp-release ./myapp
helm lint detects chart problems, while helm template renders the final Kubernetes YAML without deploying it. citeturn182866view5
Upgrade and Roll Back a Release
Upgrade:
helm upgrade web-app bitnami/nginx \
-n demo \
-f values-prod.yaml
View revision history:
helm history web-app -n demo
Roll back:
helm rollback web-app 1 -n demo
Helm records release revisions, allowing teams to return to an earlier working deployment. citeturn783918search10
Uninstall a Release
helm uninstall web-app -n demo
This removes the Kubernetes resources managed by the release. Some retained resources, such as protected resources or persistent storage, may require separate cleanup.
Common Helm Troubleshooting Commands
helm status web-app -n demo
helm history web-app -n demo
helm get values web-app -n demo
helm get manifest web-app -n demo
helm template web-app ./myapp --debug
kubectl get events -n demo
kubectl describe pod <pod-name> -n demo
kubectl logs <pod-name> -n demo
Check these common causes:
- Incorrect repository URL
- Repository not updated
- Invalid YAML or template syntax
- Wrong namespace
- Missing RBAC permission
- Invalid image name or tag
- Incorrect Service or Ingress configuration
- Insufficient CPU or memory
- Conflicting Kubernetes resource names
Helm Production Best Practices
- Pin chart versions and container image tags.
- Run
helm lintandhelm templatein CI/CD. - Keep separate values files for each environment.
- Never commit plaintext passwords or API keys to Git.
- Use Kubernetes RBAC and least-privilege access.
- Review charts before installation.
- Prefer trusted or verified chart publishers.
- Test upgrades in a lower environment first.
- Maintain a tested rollback procedure.
- Store charts and values files in version control.
The official best-practices guide covers values, templates, dependencies, labels, CRDs, and RBAC. citeturn182866view2
How Helm Is Used in DevOps Jobs
A DevOps or Kubernetes engineer commonly:
- Adds and updates chart repositories
- Creates and maintains internal charts
- Manages environment values
- Deploys applications
- Performs upgrades and rollbacks
- Troubleshoots failed releases
- Integrates Helm with Jenkins, GitHub Actions, Argo CD, or Flux
- Validates charts during CI/CD
- Reviews chart security and permissions
Important Helm Interview Questions
What is Helm?
Helm is a package and release manager that installs and manages Kubernetes applications through reusable charts.
What is the difference between a chart and a release?
A chart is the application package. A release is one installed instance of that chart.
What is values.yaml?
It stores the chart’s default configuration. Its values can be overridden with -f or --set.
What is the difference between Helm and kubectl?
kubectl directly manages Kubernetes resources. Helm packages related resources, templates configuration, and tracks release history.
How do you validate a chart?
helm lint ./mychart
helm template my-release ./mychart
How do you upgrade or roll back an application?
helm upgrade <release> <chart>
helm history <release>
helm rollback <release> <revision>
Does Helm require Git?
No. Git is useful for storing charts, values files, and deployment history, but Helm itself does not require Git.
Final Interview Answer
Helm is a package and release manager for Kubernetes. It packages Kubernetes manifests into reusable charts, supports configuration through values files, and manages installation, upgrades, release history, rollback, and uninstallation. In production, I use Helm with version control and CI/CD to create consistent deployments across development, staging, and production environments.