Helm β Package Manager for Kubernetes
Helm is the package manager for Kubernetes. It lets you define, install, and upgrade Kubernetes applications using reusable packages called Charts.
Think of Helm as apt or npm for Kubernetes. Instead of writing hundreds of YAML files, you install a pre-built chart with sensible defaults.
Helm Architecture
Helm Chart Kubernetes Cluster
βββββββββββββββββββ ββββββββββββββββββββββ
β Chart.yaml β β β
β values.yaml β helm β Deployments β
β templates/ βββinstallββΆ Services β
β deployment β β ConfigMaps β
β service β β Secrets β
β ingress β β Ingresses β
βββββββββββββββββββ ββββββββββββββββββββββ
A chart is a package of K8s manifests
Installing Helm
# macOS
brew install helm
# Windows
choco install kubernetes-helm
# Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Verify installation
helm version
Using Helm
# Add a repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Search for charts
helm search repo nginx
# Install a chart
helm install my-nginx bitnami/nginx
# Install with custom values
helm install my-nginx bitnami/nginx --set service.type=NodePort
# List installed releases
helm list
# Upgrade a release
helm upgrade my-nginx bitnami/nginx --set replicaCount=3
# Rollback
helm rollback my-nginx 1
# Uninstall
helm uninstall my-nginx
Creating Your Own Chart
# Scaffold a new chart
helm create my-chart
# Structure:
# my-chart/
# Chart.yaml # Chart metadata
# values.yaml # Default configuration values
# templates/ # K8s manifest templates
# deployment.yaml
# service.yaml
# ingress.yaml
# _helpers.tpl # Template helpers
# Lint your chart
helm lint my-chart
# Template rendering (debug)
helm template my-chart
# Package the chart
helm package my-chart
# Install from local chart
helm install my-release ./my-chart
Helm Best Practices
Use values.yaml for configuration β Do not hardcode values in templates.
Version your charts β Use semantic versioning in Chart.yaml.
Use --dry-run β Test your changes before applying them.
Keep charts small β One chart per application or microservice.