web-dev-qa-db-fra.com

Impossible d'installer les graphiques kubernetes sur l'espace de noms spécifié

J'ai installé un cluster sur Google Kubernetes Engine.

Et puis, j'ai créé un espace de noms "staging"

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

Ensuite, je suis passé à fonctionner dans l'espace de noms de transfert

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

Et puis, j'ai installé postgresql à l'aide de helm sur l'espace de noms intermédiaire

helm install --name staging stable/postgresql

Mais j'ai:

Erreur: échec de la libération du transfert: les espaces de noms "transfert" sont interdits: utilisateur "système: compte_service: système kube: par défaut" ne peut pas obtenir les espaces de noms dans l'espace de noms "transfert": utilisateur inconnu "système: compte_services: système kube: par défaut"

Qu'est-ce que ça veut dire..?? Comment le faire fonctionner .. ??

Merci..

8
karina

Comme votre cluster est compatible RBAC, il semble que votre pod tiller ne dispose pas de suffisamment d'autorisations.

Vous utilisez default ServiceAccount qui manque suffisamment de permission RBAC, nécessite tiller.

Tout ce dont vous avez besoin pour créer ClusterRole, ClusterRoleBinding et ServiceAccount. Avec eux, vous pouvez fournir l'autorisation nécessaire à votre Pod.

Suivez ces étapes

_1. Créer ClusterRole tiller

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

Remarque: j'ai utilisé la permission complète ici.

_2. Créer un compte de service tiller dans kube-system espace de noms

$ kubectl create sa tiller -n kube-system

_3. Créer 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

Vous devez maintenant utiliser ce ServiceAccount dans votre déploiement de tiller.

Comme vous en avez déjà un, modifiez-le

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

Définissez serviceAccountName sur tiller sous PodSpec

En savoir plus sur RBAC

19
Mir Shahriar Sabuj

Essayer:

helm init --upgrade --service-account tiller

comme suggéré par Scott S dans ce commentaire.

1
Madhu