Helm Tutorial


  • Kubernetes Cluster or Minikube (I’m using minikube)
  • Kubectl
  • Helm and Tiller

What’s helm ?

Helm is a tool for Kubernetes packages called charts.

What’s tiller ?

Tiller is a receives commands from helm and communicating directly with the Kubernetes API to do the actual work of creating and deleting resources in your cluster.

As you can see Helm client interacts with Tiller Server, Tiller Server interacts with Kubernetes-Api. Helm client manages charts, tiller manages releases,

Some concepts we need to know :

  • Chart: is a Helm package. It contains all of the files needed to run your application inside of a kubernetes cluster , this as a collection of yaml files of (deployment, service, configmap, etc…)
  • Chart Repository: is a location where the packaged and versioned charts are released.
  • Release is an instance of a chart running in a Kubernetes cluster.

Helm installation using choco you can use below command:

> choco install kubernetes-helm

For MacOS and Linux you can use below command:

$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh

First we will create service account :

$ kubectl -n kube-system create serviceaccount tiller

Lets check the role which we created:

$ kubectl get serviceaccount -n kube-system

now we have to bind the tiller serviceaccount to the cluster-admin role

$ kubectl create clusterrolebinding tiller-clusterrole cluster-admin –serviceaccount=kube-system:tiller

After helm init, you should be able to run kubectl get pods --namespace kube-system and see Tiller running.

$ helm init –service-account tiller

Lets check the helm version:

$ helm version

$ helm search jenkins

The cluster-admin role is created by default in a Kubernetes cluster, so you don’t have to define it explicitly.