web-dev-qa-db-fra.com

Impossible de créer un rôle de cluster dans GKE même si je suis propriétaire et administrateur

Après la création d'un nouveau cluster GKE, la création d'un rôle de cluster a échoué avec l'erreur suivante:

Error from server (Forbidden): error when creating "./role.yaml":
clusterroles.rbac.authorization.k8s.io "secret-reader" is forbidden: 
attempt to grant extra privileges: [PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["get"]} PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["list"]}] user=&{[email protected]  
[system:authenticated] map[authenticator:[GKE]]} ownerrules= . 
[PolicyRule{Resources:["selfsubjectaccessreviews" 
"selfsubjectrulesreviews"], APIGroups:["authorization.k8s.io"], Verbs: 
["create"]} PolicyRule{NonResourceURLs:["/api" "/api/*" "/apis" 
"/apis/*" "/healthz" "/swagger-2.0.0.pb-v1" "/swagger.json" 
"/swaggerapi" "/swaggerapi/*" "/version"], Verbs:["get"]}] 
ruleResolutionErrors=[]

Mon compte dispose des autorisations suivantes dans IAM:

Kubernetes Engine Admin

Administrateur du cluster Kubernetes Engine

Propriétaire

Ceci est mon role.yaml (des documents Kubernetes) :

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

Selon les documents RBAC de GCloud , je dois 

créez un RoleBinding qui attribue à votre identité Google un rôle d'administrateur de cluster avant de tenter de créer des autorisations supplémentaires, à savoir Role ou ClusterRole.

Alors j'ai essayé ceci :

export GCP_USER=$(gcloud config get-value account | head -n 1)
kubectl create clusterrolebinding cluster-admin-binding
--clusterrole=cluster-admin --user=$GCP_USER

qui a réussi, mais je reçois toujours la même erreur lors de la création du rôle de cluster.

Des idées que je pourrais faire mal?

9
Sebastian Rösch

Selon Documents Google Container Engine , vous devez d'abord créer un RoleBinding qui vous octroie toutes les autorisations incluses dans le rôle que vous souhaitez créer.

Obtenir l'identité actuelle de Google

$ gcloud info | grep Account

Account: [[email protected]]

Attribuer un administrateur de cluster à votre identité actuelle

$ kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole=cluster-admin [email protected]

Clusterrolebinding "myname-cluster-admin-binding" created

Maintenant, vous pouvez créer votre ClusterRole sans aucun problème.

J'ai trouvé la réponse dans CoreOS FAQ/Dépannage consultez-le pour plus d'informations.

C'est la bonne solution. Est-ce que GCP_USER obtenu est identique au nom d'utilisateur [email protected] dans le message d'erreur de création de rôle?

1
Jordan Liggitt

Le commentaire de S.Heutmaker m’a amené à la solution.

Pour moi, la solution consistait à créer la liaison admin-cluster avec le casse correct de l'adresse électronique. Vérifiez le boîtier dans le message d'erreur ou la console IAM google cloud

$ kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole=cluster-admin [email protected]
1
RauBan

Si le cas est correct, essayez d’ajouter les deux variantes de domaine googlemail (c.-à-d. @gmail.com et @googlemail.com). Pour moi, gcloud info | grep Account a renvoyé <name>@googlemail.com, mais je devais créer une liaison clusterrole avec <name>@gmail.com pour que la commande fonctionne.

0
lordvlad