10th Week :- Helm in DevOps – Your Complete Guide to Kubernetes Package Management

Lav kushwahaLav kushwaha
4 min read

📌 Introduction

If you’ve ever worked with Kubernetes 🐳, you know how quickly managing multiple YAML files can turn into a nightmare 😅.
Imagine having to deploy an app with Deployments, Services, ConfigMaps, Ingress, Secrets — and updating each file manually.

That’s where Helm 🪖 comes in —
The Package Manager for Kubernetes that makes life way easier for DevOps engineers.


🧐 What is Helm?

Helm is like apt for Ubuntu 📦 or npm for Node.js — but instead of installing apps on your system, it installs applications into Kubernetes.

💡 Helm = Kubernetes app manager + templating tool

With Helm, you can:

  • 📦 Package all your Kubernetes manifests into a single bundle (called a Chart)

  • Install apps with one command

  • 🔄 Upgrade & Rollback versions easily

  • 🌍 Share your app via Helm repositories

📖 Official Helm definition:

“Helm is the best way to find, share, and use software built for Kubernetes.”


📜 What is a Helm Chart?

A Helm Chart is basically a blueprint 🏗️ for deploying an application in Kubernetes.
It’s a collection of files 📂 that describe all the Kubernetes resources your app needs.

🗂 Helm Chart Structure

mychart/
│── Chart.yaml         # 📄 Metadata about the chart (name, version, description)
│── values.yaml        # ⚙️ Default config values
│── templates/         # 🖌 Kubernetes manifest templates
│   ├── deployment.yaml
│   ├── service.yaml
│   └── ingress.yaml
│── charts/            # 📦 Dependencies (subcharts)
│── README.md          # 📝 Documentation (optional)

💡 Why Use Helm in DevOps?

Managing Kubernetes without Helm feels like juggling 🔥 — lots of YAMLs, lots of repetition.

😩 Without Helm😎 With Helm
Edit multiple YAML files for small changesChange 1 value in values.yaml
Tedious manual upgradesUpgrade with helm upgrade
Hard to rollbackRollback with helm rollback
Sharing configs is painfulShare charts easily via repos

Benefits:

  • Reusable — same chart works for dev, staging, prod

  • 🕒 Time-saving — no repeated editing

  • 🔄 Easy rollback — restore previous working version

  • 🎯 Parameterization — change configs without touching templates


⚙️ How Helm Works

Helm has two main parts:

  1. Helm CLI 🖥 — You run commands like install, upgrade, rollback.

  2. Helm Library 📚 — Talks to Kubernetes API to create/update/delete resources.

🔍 Process:

  1. You run → helm install myapp ./mychart -f custom-values.yaml

  2. Helm reads your templates/ & merges with values.yaml.

  3. Helm renders final Kubernetes manifests 📝.

  4. Helm applies them to your cluster.

  5. Helm remembers your release for upgrades/rollbacks.


🛠 Installing Helm

🐧 Linux / 🍏 macOS:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

🪟 Windows (PowerShell):

choco install kubernetes-helm

Verify Installation:

helm version

🏗 Creating Your First Helm Chart

Step 1: Create chart 📦

helm create mychart

Step 2: Edit values.yaml ⚙️

replicaCount: 3
image:
  repository: nginx
  tag: "1.21.0"
service:
  type: ClusterIP
  port: 80

Step 3: Install 🚀

helm install myapp ./mychart

Step 4: Check status 📊

helm list

🎨 Working with Templates

Templates in Helm use Go templating syntax ({{ }}).

Example:

spec:
  replicas: {{ .Values.replicaCount }}
  containers:
    - name: nginx
      image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

Values from:

replicaCount: 3
image:
  repository: nginx
  tag: "1.21.0"

Render as:

spec:
  replicas: 3
  containers:
    - name: nginx
      image: "nginx:1.21.0"

🔧 Using values.yaml

  • Stores default configs.

  • Override values:

helm install myapp ./mychart --set replicaCount=5

or

helm install myapp ./mychart -f custom-values.yaml

🚀 Default Use Cases for Helm

  1. 📦 Application Deployment — Nginx, MySQL, Redis, Prometheus.

  2. 🛠 Microservices — multiple services in one chart.

  3. 🔄 CI/CD Pipelines — auto deploy with GitOps (ArgoCD + Helm).

  4. Cloud-Native Projects — bootstrap apps quickly.

  5. 📜 Reusable Templates — one chart, many environments.


🏁 Real Example: Deploy Nginx

Add repo:

helm repo add bitnami https://charts.bitnami.com/bitnami

Install:

helm install my-nginx bitnami/nginx

Upgrade:

helm upgrade my-nginx bitnami/nginx --set image.tag=1.23.0

Rollback:

helm rollback my-nginx 1

📌 Best Practices

  • 🧹 Keep values.yaml clean & documented.

  • 🚫 Don’t hardcode values in templates.

  • 🔗 Use subcharts for dependencies.

  • 🗂 Version control your charts.

  • ✅ Lint before deploy:

helm lint mychart

🎯 Conclusion

Helm is a game-changer 🏆 for Kubernetes in DevOps.
It saves time ⏳, avoids mistakes ❌, and makes deployments smooth ✨.
Whether you’re deploying a simple web app 🌐 or a complex microservices architecture 🏗, Helm helps you manage it like a pro.

0
Subscribe to my newsletter

Read articles from Lav kushwaha directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lav kushwaha
Lav kushwaha