Helm
Package manager for Kubernetes that simplifies deployment and management of containerized applications through reusable charts.
Updated on January 28, 2026
Helm is the official package manager for Kubernetes, often compared to apt/yum for Linux or npm for Node.js. It enables defining, installing, and managing complex Kubernetes applications through packages called "charts", facilitating deployment reproducibility and standardization.
Fundamentals
- Helm Charts: packages containing all necessary Kubernetes manifests to deploy an application
- Client-server architecture (Helm 2) evolved to client-only architecture (Helm 3) for enhanced security
- Templating: uses Go template engine to dynamically generate Kubernetes manifests
- Releases: instances of a deployed chart in a cluster with version history for easy rollbacks
Benefits
- Complexity reduction: single values.yaml file to customize dozens of Kubernetes resources
- Reusability: share charts via public repositories (Artifact Hub) or private ones
- Version management: complete deployment tracking with one-command rollback capability
- Standardization: built-in conventions and best practices for structuring deployments
- Rich ecosystem: thousands of ready-to-use charts for popular applications (PostgreSQL, Redis, Nginx, etc.)
Practical Example
Deploying a web application with database and custom configuration:
# Custom configuration
replicaCount: 3
image:
repository: myapp/frontend
tag: "2.1.0"
pullPolicy: IfNotPresent
service:
type: LoadBalancer
port: 80
ingress:
enabled: true
className: nginx
hosts:
- host: myapp.example.com
paths:
- path: /
pathType: Prefix
postgresql:
enabled: true
auth:
database: myappdb
username: appuser
primary:
persistence:
size: 10Gi
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi# Install chart with custom configuration
helm install myapp-prod ./myapp-chart \
--values values.yaml \
--namespace production \
--create-namespace
# Update an existing release
helm upgrade myapp-prod ./myapp-chart \
--values values.yaml \
--namespace production
# Rollback to previous version
helm rollback myapp-prod 1 --namespace production
# Check status
helm status myapp-prod --namespace production
# Deployment history
helm history myapp-prod --namespace productionImplementation
- Install Helm CLI on your development machine or CI/CD pipeline
- Create chart structure with 'helm create my-app' or use existing chart from Artifact Hub
- Customize values.yaml file with environment-specific parameters (dev, staging, prod)
- Define Kubernetes templates in templates/ folder using Go templating syntax
- Validate chart with 'helm lint' and test rendering with 'helm template'
- Package chart with 'helm package' for distribution or deploy directly with 'helm install'
- Configure private repositories (ChartMuseum, Harbor, Nexus) to manage internal charts
- Integrate Helm into CI/CD pipelines to automate multi-environment deployments
Pro Tip
Use Helmfile to manage multiple Helm releases declaratively and structure your multi-environment deployments. Combine Helm with tools like Kustomize to separate base configuration (charts) from environment-specific overlays, providing maximum flexibility while maintaining the DRY (Don't Repeat Yourself) principle.
Related Tools
- Helmfile: declarative tool to manage multiple Helm releases
- Helm Secrets: plugin to encrypt sensitive values with SOPS or Vault
- ChartMuseum: repository server to host private Helm charts
- Artifact Hub: public registry to discover and share Helm charts
- Helm Diff: plugin to preview changes before an upgrade
- Renovate/Dependabot: automation for chart version updates
Helm has established itself as the de facto standard for managing Kubernetes applications in enterprise environments. By packaging operational expertise as reusable charts, it significantly accelerates deployment cycles while reducing configuration errors. For organizations adopting Kubernetes, mastering Helm becomes essential to industrialize DevOps practices and ensure consistency across environments.

