44
votes

I'm getting this error message:

➜  ~ helm version
Error: could not find tiller

I've created tiller project:

➜  ~ oc new-project tiller
Now using project "tiller" on server "https://192.168.99.100:8443".

Then, I've created tiller into tiller namespace:

➜  ~ helm init --tiller-namespace tiller
$HELM_HOME has been configured at /home/jcabre/.helm.

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

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!

So, after that, I've been waiting for tiller pod is ready.

➜  ~ oc get pod -w
NAME                             READY     STATUS    RESTARTS   AGE
tiller-deploy-66cccbf9cd-84swm   0/1       Running   0          18s
NAME                             READY     STATUS    RESTARTS   AGE
tiller-deploy-66cccbf9cd-84swm   1/1       Running   0          24s
^C%               

Any ideas?

8

8 Answers

65
votes

Try deleting your cluster tiller

kubectl get all --all-namespaces | grep tiller
kubectl delete deployment tiller-deploy -n kube-system
kubectl delete service tiller-deploy -n kube-system
kubectl get all --all-namespaces | grep tiller

Initialise it again:

helm init

Now add the service account:

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

This solved my issue!

24
votes

You don't have helm configured yet, use the following command:

helm init

This will create .helm with repository, plugins, etc, in your home directory.

Background: helm comes with client and server, if you have a different deployment environment, it might be possible that your helm server (known as tiller) is different, in that case, there are two ways to point to tiller

  • set environment variable TILLER_NAMESPACE
  • --tiller-namespace string namespace of Tiller (default "kube-system")

For more details check the helm READ.md file.

11
votes

You installed tiller into a non-default namespace, so you have to tell helm where to look.

helm --tiller-namespace tiller  version
9
votes

First of all you need to create service account for teller to use in helm:

kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller

To verify that Tiller is running:

kubectl get pods --namespace kube-system

DigitalOcean Reference

7
votes

Now you can upgrade to the latest version of Helm or any version > 3.0.0.

You don't need to do

helm init

anymore.

The Tiller and client directories are initialised automatically when you start using helm. As mentioned here

2
votes

I was facing the same issue, try to re-install helm by using the commands below:

For linux: (Via Snap)

sudo snap install helm --classic

For Linux (from Binary source):

  1. Download your desired version
  2. Unpack it (tar -zxvf helm-v2.0.0-linux-amd64.tgz)
  3. Find the helm binary in the unpacked directory, and move it to its desired destination (mv linux-amd64/helm /usr/local/bin/helm)

For MacOS (Via brew):

brew install kubernetes-helm

For windows (Via Chocolatey):

choco install kubernetes-helm

And finaly, intialize the helm:

helm init
1
votes

With helm 3 releases, we do not need tiller anymore. Try to upgrade the helm version to 3. It provides more security to your cluster.Because tiller runs in your Kubernetes cluster with full administrative rights, which is a risk if somebody gets unauthorized access to the cluster. If you migrate to helm3, you do not need to do helm init thereafter because helm version 3 is a tiller-less architecture.

0
votes

try

cp /usr/local/bin/tiller ~/.helm/

and check if the helm is deployed on server with

helm version