Lesson 01 Introduction to Helm
Theme:

Lab Guide

Time estimate: 30–45 minutes  ·  Goals: Install Helm, explore repositories and charts, deploy your first release

Prerequisites

Task 1: Install Helm

Installation Instructions

Choose the installation method for your operating system:

macOS

# Using Homebrew
brew install helm

# Verify installation
helm version

Linux

# Using the official install script
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# Verify installation
helm version

Windows

# Using Chocolatey
choco install kubernetes-helm

# Or using Scoop
scoop install helm

# Verify installation
helm version

Expected output (version numbers may differ):

version.BuildInfo{Version:"v3.16.3", GitCommit:"...", GitTreeState:"clean", GoVersion:"go1.22.7"}

Verify Cluster Connectivity

Helm uses your kubeconfig to connect to Kubernetes. Confirm that both tools can reach the cluster:

# kubectl should return cluster info
kubectl cluster-info

# Helm should list releases (empty list is fine)
helm list

✓ Check: helm version prints version info and helm list runs without errors.

Task 2: Add a Repository and Explore Charts

Step 2.1 — Add the Bitnami Repository

Bitnami maintains the largest collection of curated Helm charts. Add it to your local Helm configuration:

# Add the Bitnami repo
helm repo add bitnami https://charts.bitnami.com/bitnami

# Update the local index
helm repo update

Expected output:

"bitnami" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

✓ Check: helm repo list shows the bitnami repository.

Step 2.2 — Search for Charts

Search the repository for nginx charts:

# Search local repos
helm search repo nginx

You should see results like:

NAME                  CHART VERSION   APP VERSION   DESCRIPTION
bitnami/nginx         18.2.4          1.27.2        NGINX Open Source is a web server...
bitnami/nginx-...     ...

Step 2.3 — Inspect a Chart

Before installing, examine the chart's metadata and configurable values:

# Show chart metadata
helm show chart bitnami/nginx

# Show all configurable values (long output)
helm show values bitnami/nginx | head -60

# Show the full README
helm show readme bitnami/nginx

Tip

Pipe helm show values through less or redirect to a file for easier reading: helm show values bitnami/nginx > nginx-defaults.yaml

✓ Check: You can see the chart version, app version, and at least 10 configurable values from helm show values.

Task 3: Install a Chart and Explore the Release

Step 3.1 — Install NGINX with Custom Values

Install the Bitnami NGINX chart with a custom release name and a few value overrides:

# Install with ClusterIP service (works in any cluster)
helm install my-nginx bitnami/nginx \
  --set service.type=ClusterIP \
  --set replicaCount=2

Helm will output the release status and notes. Read the notes carefully — they often contain instructions for accessing your application.

Why ClusterIP?

We use ClusterIP instead of the default LoadBalancer because local clusters (minikube, kind) may not have a load balancer provisioner. ClusterIP always works and you can access the service via kubectl port-forward.

Step 3.2 — Inspect the Release

Use Helm and kubectl to examine what was created:

# List all Helm releases
helm list

# Show detailed release status
helm status my-nginx

# See the Kubernetes resources Helm created
kubectl get all -l app.kubernetes.io/instance=my-nginx

# View the release history
helm history my-nginx

Expected output from helm list:

NAME      NAMESPACE   REVISION   UPDATED                    STATUS     CHART          APP VERSION
my-nginx  default     1          2026-04-06 10:00:00 ...    deployed   nginx-18.2.4   1.27.2

Step 3.3 — Access the Application

Use port-forwarding to access NGINX locally:

# Forward local port 8080 to the NGINX service
kubectl port-forward svc/my-nginx 8080:80

Open http://localhost:8080 in your browser. You should see the default NGINX welcome page.

Press Ctrl+C to stop port-forwarding when done.

Step 3.4 — View the Rendered Manifests

See exactly what YAML Helm sent to Kubernetes:

# Get the manifests for the current release
helm get manifest my-nginx | head -80

Step 3.5 — View Release Secrets

Helm stores release metadata as Kubernetes Secrets:

# List Helm-managed secrets
kubectl get secrets -l owner=helm

You should see a secret named sh.helm.release.v1.my-nginx.v1.

Step 3.6 — Clean Up

Uninstall the release when you are finished:

# Remove the release and all its resources
helm uninstall my-nginx

# Verify resources are gone
kubectl get all -l app.kubernetes.io/instance=my-nginx
helm list

✓ Check: You successfully installed NGINX, saw the welcome page via port-forward, inspected the release with helm status and helm history, and cleanly uninstalled it.

Troubleshooting

Finishing Up

Once you have completed all three tasks, verify the following:

Self-Check