Kubernetes is one of those technologies that can, at times, be rather daunting in its complexity.
There are so many tools to support Kubernetes. So very, very many tools. And some of these tools carry with them even more complexity. So when you layer one challenge onto another, things start to get a bit heavy. That’s why when you find a tool that can actually make things a bit easier, you jump on it.
Such is the case with Helm. In short, Helm is an application manager for Kubernetes that streamlines the installation and management of applications. In other words, Helm is to Kubernetes what apt, dnf, and zypper are to Ubuntu, RHEL, and SUSE, respectively.
We are going to focus on the installation of the Helm client, specifically on Ubuntu Server 18.04.
What You Need
To successfully install Helm, you’ll need a running Kubernetes cluster and a user with sudo access. That’s it. It is, however, crucial that you have your Kubernetes cluster up and running before you attempt to install and use Helm.
If your Kubernetes cluster is ready, let’s get Helm up and running.
Believe it or not, the installation of Helm is quite easy. This is made so because of a ready available binary executable that doesn’t actually require anything in the way of installation, other than downloading and moving the file into the proper location.
To do this, log into the master node of your Kubernetes cluster and download the Helm file with the command:
Once the file has downloaded, unpack it with the command:
tar xvf helm-v3.0.2-linux-amd64.tar.gz
With the file unpacked, move the helm executable into the /usr/local/bin directory with the command:
sudo mv linux-amd64/helm /usr/local/bin/
You can then delete the directory and downloaded helm file with the commands:
rm -rf linux-amd64
With everything cleaned up, check to make sure the Helm installation worked by issuing the command:
You should see displayed release numbers including the BuildInfo, GitCommit, GitTreeState, and GoVersion (Figure 1).
Add a Chart Repository
Helm depends upon chart repositories to function. A chart repository is a remote server (using the HTTP protocol) that holds an index.yaml file and (optionally) packaged charts. A chart is a collection of files that describe a set of Kubernetes resources. A chart may be used to deploy a simple pod or one that contains a complex stack of applications and services.
Charts are files, laid out in a specific directory tree, which can be packaged into versioned archives and deployed. A typical chart directory tree might look like this:
The entire tree is packaged into a chart that can be easily deployed, using Helm. In order to do this, you must first add a chart repository. Say, for example, you want to add the official stable Helm charts. To do this, go back to your Kubernetes master node and issue the command:
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
Once the repository has been added, Helm will report the task complete (Figure 2).
But what does that stable repository contain? List out the contents with the command:
helm search repo stable
You should see a listing of all the available charts (Figure 3).
Installing a Chart
Let’s install a chart from the Helm stable repository. First let’s update everything with the command:
helm repo update
Now, we’ll install a chart from the repository. Say you want to install the chart for Nextcloud. Do that with the command:
helm install stable/nextcloud --generate-name
Once the chart is installed, you’ll be given clear instructions on how to complete the deployment (Figure 4).
Make sure to follow the instructions given to you by the chart install output, otherwise you won’t be able to complete the deployment of the application. Each chart will have different instructions, some of them more complicated and demanding than others. Even so, you will know exactly what steps you must take next, in order to finish up the deployment.
If Kubernetes tends to overwhelm you with complexity, you should definitely add Helm into the mix to level that challenging playing field. Or even if you’ve mastered Kubernetes, there’s no reason why you can’t add a tool to make the process a bit more efficient. Helm will do that for you.