Helm Explained: Guide to Managing Kubernetes Applications with Hands-On Example (Part 1)

Helm Explained: Guide to Managing Kubernetes Applications with Hands-On Example (Part 1)

Hey Everyone 👋 Helm is a very useful tool in simplying Cluster management and is mainstream in production. This is Part 1 of Helm Explained blog where I explain how to install Helm Charts. I will explain how to create your own Helm chart in Part 2

What is Helm ?

Helm is the package manager for Kubernetes. To simplify, think of it as a more complex version (until it isn’t) of tools like apt, choco, or brew, but designed for Kubernetes. Just as you install software packages on Linux, macOS, or Windows using these tools, Helm allows you to install and manage applications in Kubernetes clusters. Helm packages are called Helm Charts.

There are two primary ways to find them:

  1. Artifact Hub (artifacthub.io): This serves as the central repository for Helm charts. Most popular tools like PostgreSQL, Prometheus, and ArgoCD are available here. Always verify that charts are from trusted sources before installing them.

  2. Official Project Repositories: Many projects host their Helm charts directly in their official GitHub/GitLab repositories. For example, searching “ArgoCD Helm chart GitHub” on Google will typically lead you to the project’s official source. This method ensures authenticity but may require manual effort.

Helm simplifies installing, listing, upgrading, and uninstalling applications in Kubernetes, making cluster management far more efficient. You can even create your own application's Helm chart to streamline deployments with a single command. Helm charts use Kubernetes YAML files (like deployment.yaml, ingress.yaml, and service.yaml) but add templating features. This templating reduces redundancy and speeds up updates, as you can reuse configurations across environments without rewriting entire files.

How to deploy helm charts in Kubernetes ?

You need to a Cluster running somewhere and kubectl CLI tool as a prerequisite and you can install the Helm CLI tool from https://helm.sh/. Helm interacts with your kubeconfig file therefore you can easily set contexts to local or remote clusters using kubectl config get-contexts and kubectl config use-context [Cluster Name]

Once that is complete, you can start using the Helm CLI tool. I am using local KinD cluster and installing ArgoCD in cluster for Hands-On Example. Here are the steps →

1. Add helm chart’s repository :

The command used here is helm repo add [NAME] [URL] [flags]. This adds the chart’s repository in your helm CLI and will fetch updates, various versions from here. You can get this command for your desired package from the methods mentioned above and specifying namespace is recommended.
Since I am installing ArgoCD, here is the command :

Repo gets added to helm list and you can see using helm repo list :

2. Install helm chart :

The command used here is helm install [NAME] [CHART] [flags]. This actually applies the helm chart in the cluster and all the kubernetes components such as deployments, services are applied. You can also specify chart version using flags. find it in the image below

You can then run helm list -n [NAMESPACE] command to see packages installed using helm →

3. Check Available versions of a helm chart and install specific versions :

The command used here is helm search repo [CHART] --versions to get the versions.

you can install specific versions using the command helm install [release name] [Chart name] --version [Chart version] --namespace [Namespace]

helm install my-release argo/argo-cd --version 2.13.3 --namespace argo

4. Update/Downgrade helm charts :

You will have to update the helm repository using helm repo update

and then you can update it using helm upgrade [release name] [Chart name] --version [Chart version] --namespace [Namespace]. If you do not specify version, it will automatically update to latest.

FunFact - You can downgrade just by specifying the desired older version. I downgraded from v2.14.1 to v1.6.2 through this. See the image below →

5. Uninstall helm charts :

helm uninstall my-release --namespace argo

CRDs :
Helm cannot upgrade custom resource definitions by design therefore you also have to delete CRDs manually using kubectl delete crd [CRD_NAME]. In my case, I had to delete it manually as you can see in above image

6. History and RollBacks :

The command to check history is helm history [release name] -n [namespace]

We can rollback to previous versions using helm rollback [release name] [REVISION] [flags]
See the image below. Revision numbers are listed in the above image in left most table. I rolled back to v1.3.6

Apart from these features, you can check out Helm’s official documentation to learn more.

That's it from my side. Please leave comments if you have any doubts, and I will answer them. Subscribe to my newsletter !

Part 2 is about creating your own Helm chart. Coming soon.

Connect with me on LinkedIn | GitHub.

Thanks for reading :)