Introduction to Helm: Simplifying Kubernetes Deployment
Stop managing endless YAML files. Learn to use Helm, the Kubernetes package manager, to simplify complex application deployment with reusable charts.

Previously in this course, we covered Deployments: Declarative Updates and Environment-Specific Configuration. While managing raw YAML manifests works for simple projects, it becomes a maintenance nightmare as your architecture grows. This lesson introduces Helm, the industry-standard package manager for Kubernetes, which allows you to bundle, version, and share your application logic as reusable "Charts."
Why We Need Helm for Packaging
When you manage a complex application, you don't just have a Pod. You have a Service, a Deployment, a ConfigMap, a Secret, and perhaps an Ingress. Managing these as dozens of individual files is error-prone.
Helm solves this by introducing:
- Templates: Instead of static YAML, you use placeholders that get filled in during deployment.
- Values Files: You separate your configuration (ports, image tags, replicas) from the application structure.
- Packaging: You can bundle everything into a single "Chart," making it easy to version and distribute.
Installing Helm
Helm is a binary that runs on your local machine and interacts with your cluster via your existing kubeconfig.
- macOS (Homebrew):
brew install helm - Linux (Snap):
sudo snap install helm --classic - Windows (Chocolatey):
choco install kubernetes-helm
Once installed, verify it with:
Bashhelm version
Understanding Charts
A Helm Chart is essentially a folder containing a collection of files that describe a related set of Kubernetes resources. When you "deploy an app" with Helm, you are installing a Release—an instance of a chart combined with a specific set of configuration values.
The structure of a chart looks like this:
Chart.yaml: Metadata about the app (version, name).values.yaml: The default configuration values.templates/: A folder containing the actual Kubernetes manifests, but with templating syntax (e.g.,{{ .Values.replicaCount }}).
Worked Example: Deploying Nginx
Instead of writing a Deployment and Service by hand, we can use the official stable Nginx chart.
Step 1: Add a Repository Helm repositories are like the "App Store" for Kubernetes.
Bashhelm repo add bitnami https://charts.bitnami.com/bitnami helm repo update
Step 2: Install the Chart
We will install the Nginx chart and name our release my-web-app.
Bashhelm install my-web-app bitnami/nginx
Step 3: Verify the Release
Unlike kubectl get pods, which shows you the granular pieces, helm list shows you the high-level application status.
Bashhelm list kubectl get all -l app.kubernetes.io/instance=my-web-app
Hands-on Exercise
In this exercise, you will override the default configuration of the chart to customize your deployment.
- Create a file named
my-values.yamlwith the following content to increase the replica count:YAMLreplicaCount: 3 - Upgrade your existing release with these new values:
Bash
helm upgrade my-web-app bitnami/nginx -f my-values.yaml - Observe the change:
kubectl get pods. You should see three Nginx pods spinning up. - Clean up:
helm uninstall my-web-app.
Common Pitfalls
- Forgetting to update repos: Always run
helm repo updatebefore installing; otherwise, you might be trying to install an outdated version of a chart. - Mixing Imperative and Declarative: If you manually
kubectl edita resource created by Helm, your changes will be overwritten the next time you runhelm upgrade. Always make changes in yourvalues.yamland run the upgrade. - Chart Bloat: Don't put everything into one massive chart. Keep your infrastructure (databases, caches) and your application code in separate, modular charts.
FAQ
Q: Do I still need kubectl if I use Helm?
A: Yes. Helm is for managing the lifecycle of your applications. You will still use kubectl for day-to-day debugging, checking logs, and viewing events.
Q: Is a Helm release the same as a Kubernetes Deployment? A: No. A Helm release is a collection of resources (which might include a Deployment, a Service, and a Secret). A Deployment is just one type of resource within that collection.
Recap
Helm allows us to move away from "manual" YAML management toward a package-based workflow. By using Charts, we define our infrastructure as a template, use Values to manage environment differences, and use Releases to track our deployments. You’ve now mastered the basics of installing charts and overriding configurations.
Up next: Managing Releases with Helm — we'll dive deeper into upgrading and rolling back your production deployments.
Work with me

CI/CD Pipeline & Docker Containerization
Ship with confidence: automated CI/CD pipelines and Docker setups so every push is tested and deployed — no more manual, error-prone releases.

VPS Server Setup, Deployment & Hardening
Get your app live on a fast, secure server — properly configured, hardened, and deployment-ready. No more wrestling with the command line.


