FrankWiles.com

Install Helm in a Namespace

If you’re using Kubernetes you’re probably using Helm. By default Helm installs itself into the kube-system namespace. In our experiences at REVSYS, we find that can get a bit confusing with so many other things in that namespace. We like to put Helm into another separate namespace, often named tiller.

Since I’m not spinning up new clusters on a regular basis I ALWAYS forget how to do this properly and flail around in the dark for a few minutes trying to piece together the answer from blog posts and Stackoverflow.

I’m writing this post for me as much as you so I know I can find it when I need it.

Setup Helm in a namespace

We’re going to install Helm into a namespace tiller. Keep in mind you’ll need to either pass this to helm on the command line each time you use it or set export TILLER_NAMESPACE="tiller" in your environment.

The steps are fairly straight forward actually:

shell
# Step 1: Create the namespace
$ kubectl create namespace tiller

# Step 2: Create a service account for tiller in that namespace
$ kubectl create serviceaccount --namespace tiller tiller

# Step 3: Give that service account cluster-admin access
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=tiller:tiller

# Step 4: Install helm
$ helm init --service-account tiller --tiller-namespace tiller

And that should do it. After the pod comes up, which can take a few seconds, you can verify your install by running:

shell
$ helm ls
$ helm version

You should not get an error after the first command and you should see matching versions for client and server, something like this:

shell
$ helm version
Client: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
$

Hope this post helps you as much as it will help me in the future!

NOTE: With the release of Helm 3, which no longer has a tiller process, this problem should just completely go away.

Headshot of Frank Wiles

Frank Wiles

Founder of REVSYS, Django Steering Council, PSF Fellow, and former President of the Django Software Foundation .

Expert in building, scaling and maintaining complex web applications. Want to reach out? Contact me here or use the social links below.