4 min to read
Understanding Helm - The Kubernetes Package Manager
🎯 Overview
Helm is the package manager for Kubernetes, providing functionality to package, share, and use software built for Kubernetes.
📦 What is Helm?
Helm uses a package format called chart, where chart is a collection of files describing the Kubernetes resource set.
Using a single chart, you can deploy simple ones such as memcached pods to complex ones such as entire web app stacks with HTTP servers, databases, caches, etc.
Charts consist of a collection of files inside the directory. The directory name is the name of the chart (excluding version information).
Key Components
- Chart - Package format for Kubernetes resources
- Repository - Location to share and collect charts
- Release - Instance of a chart running in a cluster
Helm supports chart repositories that can be used to store and share Helm charts.
The distributed community helm chart repository is located at Artifact Hub.
Artifact Hub is a web-based application that can find, install, and publish packages and configurations for Cloud Native Computing Foundation (CNCF) projects, including publicly available decentralized Helm charts.
🔧 Installation
Prerequisites for Installation
The following prerequisites are required before installing helm.
- Kubernetes Cluster
- Determining the security configuration to apply to the installation, if any
- Installing and Configuring Helm
# Method 1: Binary Release
wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# Method 2: Script
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# Method 3: Source Make
git clone https://github.com/helm/helm.git
cd helm
make
- You can check the installation method according to the OS here.
📁 Chart Structure
wordpress/
Chart.yaml # Chart metadata
values.yaml # Default configuration
templates/ # Kubernetes manifest templates
charts/ # Dependencies
crds/ # Custom Resource Definitions
📝 Basic Chart Files
# Chart.yaml example
apiVersion: v2
name: my-awesome-app
description: A Helm chart for Kubernetes
version: 1.0.0
appVersion: 1.16.0
# values.yaml example
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
tag: ""
🛠️ Common Helm Commands
# Search for charts
helm search hub
helm search repo
# Install a chart
helm install [RELEASE_NAME] [CHART]
# Check status
helm status [RELEASE_NAME]
# List releases
helm list
# Upgrade release
helm upgrade [RELEASE_NAME] [CHART]
# Rollback
helm rollback [RELEASE] [REVISION]
# Delete release
helm delete [RELEASE_NAME]
# Lint chart
helm lint [PATH]
📊 Helm Command Reference Table
🔧 Command | 📄 Purpose | 💻 Example |
---|---|---|
🔍 search |
Find charts | helm search hub wordpress |
📦 install |
Install a chart | helm install my-release ./chart |
📊 status |
Check release status | helm status my-release |
⬆️ upgrade |
Upgrade a release | helm upgrade my-release ./chart |
↩️ rollback |
Rollback to previous version | helm rollback my-release 1 |
❌ delete |
Remove a release | helm delete my-release |
📃 list |
Show all releases | helm list --all-namespaces |
📝 lint |
Validate chart | helm lint ./chart |
1. Version Control → Always version your charts
2. Values Management → Keep default values.yaml minimal
3. Template Organization → Use _helpers.tpl for common functions
4. Testing → Use helm lint regularly
Comments