9 Essential Helm Commands for DevOps Engineers

In the world of Kubernetes and DevOps, managing application deployments can be a daunting task. Helm, a Kubernetes package manager, has emerged as a lifesaver for DevOps engineers, simplifying the management of Kubernetes applications and resources.

In this blog post, we'll provide you with a concise cheat sheet of 9 essential Helm commands to empower DevOps engineers in their Kubernetes journey. These commands are the building blocks for efficient deployment, updates, and management of applications in Kubernetes, making your DevOps tasks more automated and repeatable.


Table of contents

What is Helm?

Helm is a package manager for Kubernetes that streamlines the installation, management, and deployment of applications. It allows you to define, install, and upgrade even the most complex Kubernetes applications, referred to as "charts," with ease. Helm's structure is based on two primary components: the Helm client and the Tiller server (though Tiller has been replaced with a more secure architecture in Helm 3).

Why Helm is Essential for DevOps Engineers

Helm plays a crucial role in modern DevOps for several reasons:

  • Consistency: Helm ensures that your application deployments are consistent, reducing configuration errors and discrepancies.
  • Automation: Helm automates the deployment process, saving time and reducing the risk of human error.
  • Versioning: Helm allows you to version and package your applications, making it easier to manage different releases.
  • Repeatability: Helm makes it easy to replicate deployments across different environments, from development to production.

Installing Helm

Before we dive into the essential Helm commands, you need to set up Helm on your local development machine. Here's a quick guide on how to do that:

You can install Helm on your local machine by following the instructions for your specific OS on the Helm website, below given are short versions for your required VM

Linux: On Debian/Ubuntu systems, you can easily install Helm with a single command:

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

Mac: You can install Helm on a Mac using Homebrew by running the following command:

brew install helm

Windows: You can install Helm on a Windows system by utilizing the Chocolatey package manager.

choco install kubernetes-helm

Helm terminologies

Before diving into Helm commands, it's essential to grasp the significance of important Helm terminologies. Understanding these terms is crucial for effectively utilizing Helm in a DevOps or Kubernetes environment.

  • Chart: A Helm chart is a package that contains pre-configured Kubernetes resources, templates, and application definitions. It provides a convenient way to manage and deploy applications in a Kubernetes cluster by bundling all the required resources together.
  • Repository: Helm charts can be stored in a Helm chart repository, which is a centralized location for distributing and sharing charts. Helm users can search, access, and install charts from these repositories, making it easier to collaborate and distribute applications.
  • Release: A release in Helm represents an instance of an application installation on a Kubernetes cluster. Helm manages each release separately, allowing for versioning and multiple installations of the same chart with different configurations.
  • Values File: The values file in Helm is used to customize the configuration of a chart. It allows users to specify custom variables and settings for their specific environment, which Helm uses to render templates and generate Kubernetes manifests tailored to the desired configuration.
  • Template: A template is a file within a Helm chart that defines how to generate Kubernetes manifests based on the values provided in the values file. Templates use Go templating to transform variables and configurations into valid Kubernetes resource definitions.
  • Revision: When changes are made to a release, such as updates or rollbacks, Helm creates a revision to track these modifications. This versioning system ensures that you can revert to a previous state if needed and maintains a history of changes made to a release for auditing and troubleshooting purposes.

Helm Commands

Explore the following critical Helm commands that will simplify your Helm experience and enhance your efficiency.

helm repo

The helm repo command offers a range of repository operations, allowing you to interact with repositories by listing available charts, adding new repositories, updating existing ones, and even removing repositories from your references.

~$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

~$ helm repo list
NAME     	URL
bitnami  	https://charts.bitnami.com/bitnami

~$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

~$ helm repo remove  bitnami
"bitnami" has been removed from your repositories

helm repo commands

The helm search command serves as a powerful command for discovering existing charts within ArtifactHub or any other added repository. This command enables you to find charts effectively, as demonstrated in the example of searching for Nginx charts within the bitnami repository using helm search repo

~$ helm search repo bitnami/nginx
NAME                            	CHART VERSION	APP VERSION
bitnami/nginx                   	15.3.4       	1.25.2
bitnami/nginx-ingress-controller	9.9.2        	1.9.3

helm search repo

In addition, you can perform a chart search on ArtifactHub using the helm search hub command.

~$ helm search hub nginx-ingress
URL                                               	CHART VERSION	APP VERSION
https://artifacthub.io/packages/helm/nginx-ingr...	1.0.1        	3.3.1

helm search hub

helm install

This command deploys a Helm release from a designated chart into a specific environment and namespace. The fundamental syntax for a Helm installation is as follows: helm install <release-name> <chart>.

In below example we are installing nginx chart from bitnami repository, rest of the parameters like namespace and kubeconfig are similar as of kubectl command

~$ helm install my-nginx bitnami/nginx -n nginx --create-namespace
NAME: my-nginx
LAST DEPLOYED: Thu Oct 19 18:27:12 2023
NAMESPACE: nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 15.3.4
APP VERSION: 1.25.2

helm install command

helm upgrade

This command is used to update an existing release that has been previously installed in a Kubernetes cluster using Helm.

~$ helm upgrade my-nginx bitnami/nginx -n nginx --create-namespace
Release "my-nginx" has been upgraded. Happy Helming!
NAME: my-nginx
LAST DEPLOYED: Thu Oct 19 18:28:37 2023
NAMESPACE: nginx
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 15.3.4
APP VERSION: 1.25.2

helm upgrade

helm list

You can view a comprehensive list of all installed releases by using the helm list command within a specific namespace. Alternatively, you can use the -A flag to display all releases across the entire cluster.

~$ helm list -n nginx
NAME    	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART       	APP VERSION
my-nginx	nginx    	2       	2023-10-19 18:28:37.449563855 +0000 UTC	deployed	nginx-15.3.4	1.25.2

helm rollback

Reverting changes in a release with a specified revision number is possible since a new revision is generated with every upgrade. In the previous example, after upgrading the my-nginx release, the revision was incremented to version 2.

You can utilize the helm rollback command to roll back to a previous release using the following command: helm rollback <release> <revision>. It's important to note that even the rollback command will generate a new revision for the release.

~$ helm rollback my-nginx 1 -n nginx --kubeconfig ~/.kube/dev_admin
Rollback was a success! Happy Helming!

~$ helm list -n nginx
NAME    	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART       	APP VERSION
my-nginx	nginx    	3       	2023-10-19 18:29:55.990495354 +0000 UTC	deployed	nginx-15.3.4	1.25.2

helm uninstall

To remove an existing release from a specific namespace or the entire cluster, you can employ the helm uninstall command. This command effectively removes all components installed as part of the release.

~$ helm uninstall my-nginx -n nginx
release "my-nginx" uninstalled

helm create

Creating Helm charts is essential in DevOps for application deployments. The helm create command simplifies this process by generating the chart structure, including templates and a values.yaml file that you can tailor to your application's specific requirements.

helm create my-chart

Once you've created your Helm chart, the next step is to make adjustments to the Chart.yaml file to configure chart details to accurately represent your application.

helm lint

When developing a chart, it's essential to validate its integrity, and this can be done using the helm lint command. This command specifically checks for template syntax and ensures the chart is structured correctly. You can use it as follows:

helm lint <chart-directory>

Conclusion

In conclusion, Helm commands are indispensable for DevOps engineers navigating Kubernetes deployments. They provide the flexibility, efficiency, and precision needed to manage the Kubernetes environment. Mastering these commands empowers you to seamlessly orchestrate complex applications, ensuring the success of your projects.