Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to install kubernetes charts on specified namespace

I have installed a cluster on Google Kubernetes Engine.

And then, I created namespace "staging"

$ kubectl get namespaces
default       Active    26m
kube-public   Active    26m
kube-system   Active    26m
staging       Active    20m

Then, I switched to operate in the staging namespace

$ kubectl config use-context staging
$ kubectl config current-context
staging

And then, I installed postgresql using helm on staging namespace

helm install --name staging stable/postgresql

But I got:

Error: release staging failed: namespaces "staging" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "staging": Unknown user "system:serviceaccount:kube-system:default"

What does it mean..?? How to get it working..??

Thank youu..

like image 895
karina Avatar asked Feb 01 '18 06:02

karina


1 Answers

As your cluster is RBAC enabled, seems like your tiller Pod do not have enough permission.

You are using default ServiceAccount which lacks enough RBAC permission, tiller requires.

All you need to create ClusterRole, ClusterRoleBinding and ServiceAccount. With them you can provide necessary permission to your Pod.

Follow this steps

_1. Create ClusterRole tiller

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]

Note: I have used full permission here.

_2. Create ServiceAccount tiller in kube-system namespace

$ kubectl create sa tiller -n kube-system

_3. Create ClusterRoleBinding tiller

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
  apiGroup: ""
roleRef:
  kind: ClusterRole
  name: tiller
  apiGroup: rbac.authorization.k8s.io

Now you need to use this ServiceAccount in your tiller Deployment.

As you already have one, edit that

$ kubectl edit deployment -n kube-system tiller-deploy

Set serviceAccountName to tiller under PodSpec

Read more about RBAC

like image 142
Shahriar Avatar answered Oct 28 '22 08:10

Shahriar