Helm – Part-1: Introduction to Helm, Kubernetes Package Manager

Helm is a Package Management tool for Kubernetes. This will allow Development and operational teams to quickly package, configure, maintain, and deploy applications into the Kubernetes Clusters. Helm is very useful in Kubernetes operations as the Kubernetes Deployment can become very complex and difficult when the number of services, Pods, Deployments, and Replica sets are increasing. Helm is the part of Kubernetes Project and hence it is also an open-source tool. In this article, we will give a brief Introduction to Helm, Kubernetes Package Manager, and how to install Helm on your Kubernetes cluster.

How Helm works?

We can quickly compare the Helm with the OS package managers like APT, PKG, brew, and more. SO, just like any other package manager, Helm provides automated software installation with its dependency and configuration downloading from the Central Repository.

Helm Architecture

As mentioned in the above image, Helm consists of two major components. Those are:

  1. Helm Client
  2. Tiller Server or Helm Server.

Helm Client is binary you installed on the PC which will also give you CLI. This will help you to Develop the Helm chart, Manage Repository, and sending commands to the Helm Server called Tiller. We will discuss the Command in detail in our upcoming series of articles on Helm Charts.

Helm Server or Tiller Server is the Component of the Kubernetes Cluster. This will help you to interact with Helm Client and Kubernetes API to perform the Package Management activities of the Helm. As we said earlier, we can have a detailed discussion on the Tiller operations in the upcoming articles.

This Tiller Server will be deployed in the kube-system namespace of your Kubernetes ecosystem. But in local, you can deploy as a stand-alone pod that can be used for the development purpose.

Helm Repository is the collection of Helm charts which are also known as the Packages. By default, When you run certain commands in the Helm client, that will communicate stable branch of the Official Kubernetes Chart Repository that will have popular software like, Httpd, Nginx, Jenkins, Hadoop, and more. You can search the package by simply running the helm search command on your client machine.

Installing Helm Client.

Installing Helm is Easy in Linux and macOS. You can install the Helm either by using Binary Files or from the script file or by using OS Package managers like Homebrew, APT, YUM, Chocolatey, and more. Now let’s see how to install Helm using all the mentioned methods.

Using Binary Release.

The Various version of Helm Binary Release is available in this location: Helm Binary Versions. Follow the steps to install Helm:

  1. Download the Binary for your operating system. Currently Helm Binarys are available for Linux, MacOS and Windows AMD.
  2. Unpack Binary Compressed file. (Linux: TAR file, Windows: ZIP and MacOS: TAR). Eg. tar -zxvf helm-v3.6.3-linux-amd64.tar.gz
  3. Move the file to the binary PATH location.
  4. Then test the installation by running helm help

Using Script file.

Installing the Helm using the script is one of the easiest and automated ways as the script will take care of the installation and configurations. To do so, follow the steps.

  1. Download the script. ( curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
  2. Change the permission mode of the script to 700 ( chmod 700 get_helm.sh)
  3. Then Run the script, (./get_helm.sh)
  4. Then test the installation by running helm help.

Using the Package Mangers

Since Helm has become the popular Package manager too for Kubernetes, Most of the OS package M<anagers are now providing the installation candidates from their repositories. Let’s see the Installation of Helm using the following Package Managers.

  1. MacOS (Homebrew): brew install helm
  2. Windows (Chocolatey): choco install kubernetes-helm
  3. Linux/Debian (APT): sudo apt-get install helm
  4. Linux (Snap ): sudo snap install helm –classic
  5. FreeBSD (PKG): pkg install helm

So, we have discussed how to install the Helm using different methods in detail. Now let’s see how the Helm is working.

Installing Helm Tiller (Helm Server)

Helm Tiller can be easily installed using helm init command. By default, Tiller will be installed in the default cluster of the Kubernetes. Once you run the helm init command on the cluster, you will get the following outcome

$ helm init

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Then, check your Kubernetes pods if the tiller pod is running or not by running the following command.

$ kubectl get pods --namespace kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-74ff55c5b-c69cs            1/1     Running   0          2m59s
etcd-minikube                      1/1     Running   0          3m7s
kube-apiserver-minikube            1/1     Running   0          3m7s
kube-controller-manager-minikube   1/1     Running   0          3m7s
kube-proxy-6jrvk                   1/1     Running   0          2m59s
kube-scheduler-minikube            1/1     Running   0          3m7s
metrics-server-56c4f8c9d6-pdtfx    1/1     Running   0          2m59s
storage-provisioner                1/1     Running   0          3m12s
tiller-deploy-b4a864272c-atsq3     1/1     Running   0          5m2s

You can verify the Helm Tiller installation by running the helm version. This will give you both client and server versions. If you see versions coming, your installation is successful and you can proceed with package management on the Kubernetes ecosystem.

Conclusion.

In this article, we have seen an Introduction to Helm, Kubernetes Package Manager, and discussed how Help works and How the install the Helm on your Local machine as Client and Server as Tiller. In our upcoming article, we will discuss How to deploy an application using a Helm chart and in the forthcoming articles, we will discuss how to create your own Helm chart. Stay tuned and subscribe DigitalVarys for more articles and study materials on DevOpsAgileDevSecOps, and App Development.

Leave a Reply