Lab Guide
Time estimate: 30–45 minutes · Goals: Install Helm, explore repositories and charts, deploy your first release
Prerequisites
- A running Kubernetes cluster (minikube, kind, Docker Desktop, or a cloud cluster)
kubectlinstalled and configured to talk to your cluster- Verify cluster access:
kubectl cluster-infoshould return a healthy response
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
- "Error: INSTALLATION FAILED: cannot re-use a name that is still in use" — A release with that name already exists. Use
helm listto check, thenhelm uninstall my-nginxbefore reinstalling. - Pods stuck in Pending — Your cluster may lack resources. Check with
kubectl describe podand consider reducingreplicaCountto 1. - "Error: Kubernetes cluster unreachable" — Ensure your cluster is running and
kubectl cluster-infosucceeds. For minikube, runminikube start.
Finishing Up
Once you have completed all three tasks, verify the following:
Self-Check
- ✓ Helm is installed and
helm versionworks - ✓ The Bitnami repository is added and
helm search repo nginxreturns results - ✓ You can use
helm show valuesto inspect chart defaults - ✓ You installed a release, accessed it, and uninstalled it cleanly
- ✓ You can explain the difference between a chart, a release, and a repository