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