Understanding Helm - The Kubernetes Package Manager

Featured image



🎯 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

  1. Chart - Package format for Kubernetes resources
  2. Repository - Location to share and collect charts
  3. 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.

# 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



📁 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


🔐 Best Practices

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



📚 Reference