If you’re diving into Kubernetes, you’ve likely heard of Helm, the Kubernetes package manager. Helm simplifies managing and deploying applications on Kubernetes by using reusable, version-controlled charts. Whether you’re a beginner or looking to streamline your Kubernetes workflows, this guide will walk you through installing Helm, creating a simple Helm deployment, and answering common FAQs.
What Is Helm?
Think of Helm as the “apt-get” or “yum” for Kubernetes. Instead of writing lengthy YAML files for your Kubernetes resources, Helm allows you to define everything in reusable templates called charts. Helm makes deploying, upgrading, and managing applications on Kubernetes faster and more organized.
How to Install Helm
Getting started with Helm is simple. Follow these steps to install Helm on your system:
1. Download Helm
Visit the Helm releases page on GitHub and download the binary compatible with your operating system.
2. Install Helm
For Linux, macOS, or Windows using WSL, use these commands:
- macOS
brew install helm
- Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- Windows
Use Chocolatey or Scoop:
choco install kubernetes-helm
3. Verify the Installation
After installation, confirm that Helm is set up correctly:
helm version
If Helm is installed, it will display the version and build information.
Creating a Simple Helm Deployment
Let’s create and deploy a basic Helm chart to see how it works in action.
1. Create a New Chart
Run the following command to create a Helm chart named mychart
:
helm create mychart
This generates a folder structure like:
mychart/
├── charts/
├── templates/
├── values.yaml
├── Chart.yaml
├── .helmignore
2. Understand the Files
- Chart.yaml: Contains metadata about your chart (name, version, description).
- values.yaml: Default configurations for the chart.
- templates/: Contains YAML templates for Kubernetes resources.
3. Modify the Deployment Template
Go to mychart/templates/deployment.yaml
and customize the template to define your application. For example:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.app.name }}
labels:
app: {{ .Values.app.name }}
spec:
replicas: {{ .Values.app.replicas }}
selector:
matchLabels:
app: {{ .Values.app.name }}
template:
metadata:
labels:
app: {{ .Values.app.name }}
spec:
containers:
- name: {{ .Values.app.name }}
image: {{ .Values.app.image }}
ports:
- containerPort: {{ .Values.app.port }}
4. Define Values in values.yaml
Update the values.yaml
file with default values
app:
name: myapp
replicas: 2
image: nginx
port: 80
5. Deploy the Chart
Install the chart on your Kubernetes cluster:
helm install my-release ./mychart
Here, my-release
is the release name, and ./mychart
is the chart directory.
6. Verify the Deployment
Check the deployed resources:
kubectl get all
7. Upgrade the Release
To make changes, update values.yaml
or templates and run:
helm upgrade my-release ./mychart
8. Uninstall the Release
To remove the deployment, run:
helm uninstall my-release
FAQs About Helm
1. What Are Helm Charts?
Helm charts are packages of Kubernetes manifests that define an application’s resources. They make it easy to reuse and share configurations.
2. What Are Helm Releases?
A release is a deployed instance of a Helm chart. For example, if you deploy nginx
with Helm, that deployment is a release.
3. How Do I Roll Back a Deployment in Helm?
Helm keeps a history of releases, so you can roll back to a previous version:
helm rollback my-release 1
4. Can Helm Be Used with CI/CD Pipelines?
Yes! Helm integrates seamlessly with CI/CD tools like Jenkins, GitHub Actions, or GitLab CI for automated deployments.
5. What’s the Difference Between Helm 2 and Helm 3?
Helm 3 removed the need for Tiller, improving security and simplifying the architecture.
Conclusion
Helm is a game-changer for managing Kubernetes applications, especially as your environment grows more complex. With Helm, you can simplify deployments, reuse configurations, and maintain version control — all while reducing human error.
If you’re just starting with Kubernetes, Helm is a must-learn tool. By mastering Helm, you’re not just saving time — you’re setting a solid foundation for scalable and efficient Kubernetes operations.
Have any other questions about Helm? Drop them in the comments or reach out.