web-dev-qa-db-fra.com

GKE clusterrolebinding pour cluster-admin échoue avec une erreur d'autorisation

Je viens de créer un nouveau cluster à l'aide de Google Container Engine exécutant Kubernetes 1.7.5, avec les nouvelles autorisations RBAC activées. J'ai rencontré un problème d'allocation d'autorisations pour certains de mes services, ce qui m'a conduit à ce qui suit:

docs pour l'utilisation du moteur de conteneur avec RBAC indique que l'utilisateur doit avoir la possibilité de créer des rôles d'autorisation en exécutant la commande suivante:

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=<user-name>]

Cependant, cela échoue en raison du manque d'autorisations (qui, je suppose, sont les mêmes autorisations que nous tentons d'accorder en exécutant la commande ci-dessus).

Error from server (Forbidden): 
User "<user-name>" cannot create clusterrolebindings.rbac.authorization.k8s.io at the cluster scope.: 
  "Required \"container.clusterRoleBindings.create\" permission." 
  (post clusterrolebindings.rbac.authorization.k8s.io)

Toute aide serait très appréciée car cela m'empêche de créer les autorisations nécessaires à mes services de cluster.

15
rmtmckenzie

La réponse de Janos fonctionnera pour les clusters GKE qui ont été créés avec un mot de passe, mais je recommanderais d'éviter d'utiliser ce mot de passe autant que possible (ou de créer vos clusters GKE sans mot de passe).

Utilisation d'IAM: pour créer ce ClusterRoleBinding, l'appelant doit avoir le container.clusterRoleBindings.create autorisation. Seuls les OWNER et Kubernetes Engine Admin Les rôles IAM contiennent cette autorisation (car elle permet la modification du contrôle d'accès sur vos clusters GKE).

Donc, pour permettre à [email protected] pour exécuter cette commande, un de ces rôles doit leur être attribué. Par exemple.:

gcloud projects add-iam-policy-binding $PROJECT \
  --member=user:[email protected] \
  --role=roles/container.admin
20
CJ Cullen

Si votre kubeconfig a été créé automatiquement par gcloud, alors votre utilisateur n'est pas le tout puissant administrateur - pour lequel vous essayez de créer une liaison.

Utilisation gcloud container clusters describe <clustername> --zone <zone> sur le cluster et recherchez le champ password.

Exécutez ensuite kubectl --username=admin --password=FROMABOVE create clusterrolebinding ...

32
Janos Lenart