Search code examples
linuxkuberneteskubernetes-helmkubectlminikube

`Error: could not find tiller` when running `helm version`


I have minikube and kubectl installed:

$ minikube version
minikube version: v1.4.0
commit: 7969c25a98a018b94ea87d949350f3271e9d64b6

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

I have then followed the instructions from https://helm.sh/docs/using_helm/:

  1. I have downloaded https://get.helm.sh/helm-v2.13.1-linux-amd64.tar.gz

  2. I have run

$ tar -xzvf Downloads/helm-v2.13.1-linux-amd64.tar.gz linux-amd64/
linux-amd64/LICENSE
linux-amd64/tiller
linux-amd64/helm
linux-amd64/README.md

But now, if I check my helm version, I get this:

$ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Error: could not find tiller

I have tried running helm init, but get the following:

$ helm init
$HELM_HOME has been configured at /home/SERILOCAL/<my-username>/.helm.
Error: error installing: the server could not find the requested resource

How can I get helm to initialise correctly?


Solution

  • The current helm version does not work with kubernetes version 1.16.0

    You can downgrade kubernetes to version 1.15.3

    minikube start --kubernetes-version 1.15.3
    helm init 
    

    or use my solution to fix it at version 1.16.0

    You have to create tiller Service Account and ClusterRoleBinding.

    You can simply do that by using those commands:

    kubectl --namespace kube-system create sa tiller
    kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
    

    And simply create tiller

    helm init --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -