All Articles

What is Helm? Kubernetes Package Manager Explained Simply (2026)

Helm solves one of the most painful parts of Kubernetes — managing all those YAML files. Here's what it is, how it works, and why you need it.

DevOpsBoysApr 3, 20263 min read
Share:Tweet

When you first learn Kubernetes, you write one YAML file. Then two. Then suddenly you have 15 YAML files for one application — Deployment, Service, Ingress, ConfigMap, Secret, HPA, PodDisruptionBudget... and you need to manage all of them for dev, staging, and production differently.

That's the problem Helm solves.


Helm in One Sentence

Helm is the package manager for Kubernetes. Like apt for Ubuntu or npm for Node.js — but for Kubernetes applications.


The Problem Without Helm

Imagine deploying Nginx on Kubernetes manually:

bash
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
kubectl apply -f configmap.yaml
kubectl apply -f hpa.yaml

Now you want to deploy this to staging with different replica counts and a different image tag. You either:

  • Duplicate all 5 files (now you have 10 files to maintain)
  • Use sed to swap values (fragile and error-prone)
  • Write a shell script (becomes a maintenance nightmare)

Helm fixes all of this.


How Helm Works

Helm uses charts — packages that bundle all your Kubernetes YAML files together with a templating system.

A chart looks like this:

mychart/
  Chart.yaml        # chart metadata (name, version)
  values.yaml       # default configuration values
  templates/        # Kubernetes manifests with placeholders
    deployment.yaml
    service.yaml
    ingress.yaml

Inside a template, instead of hardcoding values:

yaml
# templates/deployment.yaml
spec:
  replicas: {{ .Values.replicaCount }}
  containers:
    - image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

And in values.yaml:

yaml
replicaCount: 1
image:
  repository: nginx
  tag: "1.25"

Now you deploy with one command:

bash
helm install my-nginx ./mychart

Want 3 replicas in production? Override at deploy time:

bash
helm install my-nginx ./mychart --set replicaCount=3

Key Helm Commands

bash
# Install a chart (first time)
helm install my-release ./mychart -f values-prod.yaml
 
# Upgrade an existing release
helm upgrade my-release ./mychart --set image.tag=v2.0.0
 
# Install OR upgrade (idempotent — use this in CI/CD)
helm upgrade --install my-release ./mychart
 
# See what's deployed
helm list -n production
 
# Roll back to previous version
helm rollback my-release
 
# Remove everything
helm uninstall my-release

Pre-Built Community Charts

Helm's biggest power: thousands of pre-built charts for popular software. You don't write YAML for Nginx, Redis, PostgreSQL, Prometheus — just install it.

bash
# Add a chart repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
 
# Search for available charts
helm search repo nginx
 
# Install with custom values
helm install my-nginx bitnami/nginx \
  --set service.type=LoadBalancer \
  --set replicaCount=2

Popular chart sources:

  • Bitnami — databases, web servers, message queues
  • Prometheus Community — kube-prometheus-stack
  • ArgoCD — GitOps deployments
  • cert-manager — TLS certificates

Helm Release History

Helm tracks every change as a numbered revision. If something breaks:

bash
helm history my-release    # see all revisions
helm rollback my-release 3 # go back to revision 3

This is the equivalent of git revert for your Kubernetes deployments.


Helm vs kubectl apply

kubectl applyHelm
Multiple filesApply one by oneOne command
ConfigurationDuplicate files per envValues override
RollbackManualhelm rollback
Track what's deployedYou manageHelm manages
Community packagesWrite your ownThousands available

When to Use Helm

Use Helm for:

  • Any application with 3+ Kubernetes resources
  • Anything that needs different config per environment
  • Deploying popular tools (don't write your own Prometheus YAML)
  • CI/CD pipelines where you need reliable deploy + rollback

Getting Started

bash
# Install Helm (macOS)
brew install helm
 
# Install Helm (Linux)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
 
# Create your first chart
helm create mychart
helm install test-release ./mychart --dry-run

Resources

Newsletter

Stay ahead of the curve

Get the latest DevOps, Kubernetes, AWS, and AI/ML guides delivered straight to your inbox. No spam — just practical engineering content.

Related Articles

Comments