Chapter 10.1 - Introduction to Helm
Learning Objectives
By the end of this chapter, you will be able to:
- Understand what Helm is and why to use it
- Install Helm
- Understand the basic concepts (Charts, Releases, Repositories)
- Install and manage Charts
- Understand the benefits of Helm
- Use basic Helm commands
Introduction
Helm is the package manager for Kubernetes. It simplifies the installation and management of complex applications on Kubernetes.
What is Helm?
Helm is a tool that allows you to:
- Define Kubernetes applications as reusable packages
- Install complex applications with a single command
- Update and manage application versions
- Share applications via repositories
Analogy: Helm is like apt for Ubuntu or npm for Node.js, but for Kubernetes.
Key Concepts
Chart
A Chart is a Kubernetes application package. It contains:
- YAML templates for Kubernetes resources
- Default values file (
values.yaml) - Metadata (
Chart.yaml)
Release
A Release is an instance of a Chart deployed in a cluster. The same Chart can be installed multiple times with different releases.
Repository
A Repository is a collection of Charts. It can be local or remote (HTTP).
Installation
Linux/Mac
# Download Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Verify
helm version
Windows
# Via Chocolatey
choco install kubernetes-helm
# Or download from GitHub
# https://github.com/helm/helm/releases
Verification
helm version
# version.BuildInfo{Version:"v3.12.0", ...}
Basic Commands
Add a Repository
# Bitnami Repository (popular)
helm repo add bitnami https://charts.bitnami.com/bitnami
# Update repositories
helm repo update
# List repositories
helm repo list
Search for Charts
# Search in repositories
helm search repo nginx
# Search in Artifact Hub
helm search hub nginx
Install a Chart
# Basic installation
helm install my-release bitnami/nginx
# With a custom release name
helm install web-server bitnami/nginx
# With custom values
helm install my-release bitnami/nginx -f my-values.yaml
# With inline values
helm install my-release bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
List Releases
# See all releases
helm list
# See in a specific namespace
helm list -n production
# See all releases (including deleted)
helm list --all
Update a Release
# Update with new values
helm upgrade my-release bitnami/nginx -f new-values.yaml
# Update to a new version
helm upgrade my-release bitnami/nginx --version 15.0.0
# Rollback
helm rollback my-release 1
Delete a Release
# Delete a release
helm uninstall my-release
# See history before deletion
helm history my-release
Example: Installing NGINX
Step 1: Add the Repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Step 2: Search the Chart
helm search repo nginx
Step 3: Install
helm install my-nginx bitnami/nginx
Step 4: Verify
# See the release
helm list
# See created resources
kubectl get all -l app.kubernetes.io/instance=my-nginx
# Get the URL
helm status my-nginx
Benefits of Helm
1. Simplicity
Without Helm:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f ingress.yaml
# ... 10+ files
With Helm:
helm install my-app ./my-chart
2. Version Management
# Install a specific version
helm install my-app ./my-chart --version 1.2.3
# Update
helm upgrade my-app ./my-chart --version 1.3.0
# Rollback
helm rollback my-app 1
3. Reusability
A Chart can be used for multiple environments:
helm install my-app-dev ./my-chart -f dev-values.yaml
helm install my-app-prod ./my-chart -f prod-values.yaml
4. Sharing
Charts can be shared via public or private repositories.
Structure of a Chart
my-chart/
├── Chart.yaml # Metadata
├── values.yaml # Default values
├── templates/ # Kubernetes templates
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── charts/ # Dependencies
Useful Commands
Information
# See the values of a Chart
helm show values bitnami/nginx
# See the values of a release
helm get values my-release
# See the generated manifest
helm get manifest my-release
# See the notes
helm get notes my-release
Debugging
# Template with dry-run
helm install my-release ./my-chart --dry-run --debug
# See calculated values
helm install my-release ./my-chart --debug --dry-run
Best Practices
1. Use Repositories
Prefer official repositories over local Charts when possible.
2. Versioning
Use specific versions in production.
3. Values Files
Separate values by environment (dev, staging, prod).
4. Testing
Test Charts with --dry-run before installation.
5. Documentation
Document customizable values in values.yaml.
Summary
In this chapter, you learned:
Helm: Package manager for Kubernetes
Chart: Kubernetes application package
Release: Instance of a deployed Chart
Repository: Collection of Charts
Installation: helm install with repositories
Management: helm upgrade, helm rollback, helm uninstall
Benefits: Simplicity, versioning, reusability, sharing
Best practices: Repositories, versioning, values files, testing
Next Steps
Chapter 10.2: Helm Charts (Creation and Structure)
Chapter 10.3: Templates and Values
Lab 10.1: Installation and Use of Helm Charts
Chapter created on: December 2024