J'essaie d'automatiser la création de comptes de service à utiliser avec GKE via l'outil de ligne de commande gcloud
. J'ai trouvé un flux qui semble refléter le processus utilisé par Google Cloud Console, mais mes utilisateurs ne voient pas l'accès approprié.Comment puis-je autoriser serviceAccounts via la ligne de commande gcloud pour l'accès à l'API Kubernetes?
est ici les commandes j'exécution dans l'ordre:
# Environment:
# - uname=<username>
# - email=<user's email address>
# - GCLOUD_PROJECT_ID=<project identifier>
# - serviceAccount="${uname}@${GCLOUD_PROJECT_ID}.iam.gserviceaccount.com"
$ gcloud iam service-accounts \
create "${uname}" --display-name "email:${email}" --format json
$ gcloud projects \
add-iam-policy-binding "${GCLOUD_PROJECT_ID}" \
--member "serviceAccount:${serviceAccount}" \
--role=roles/container.developer --format=json
$ gcloud iam service-accounts keys \
create "${GCLOUD_PROJECT_ID}-${uname}.json" \
--iam-account="${serviceAccount}"
Lorsque cela exécute, il crée un nouveau compte de service et génère un fichier de clé localement. J'essaie ensuite d'utiliser cette clé pour obtenir des informations d'identification pour mon cluster Kubernetes.
$ gcloud config configurations create devcluster --activate
$ gcloud config set project devnet-166017
$ gcloud config set compute/zone us-central1-b
$ gcloud auth activate-service-account \
--key-file="${GCLOUD_PROJECT_ID}-${uname}.json"
$ gcloud container clusters get-credentials devcluster
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: \
code=403, message=Required "container.clusters.get" permission for \
"projects/${GCLOUD_PROJECT_ID}/zones/us-central1-b/clusters/devcluster".
Il semble que, pour une raison quelconque mon compte de service ne dispose pas d'une des autorisations dont il a besoin pour obtenir des informations d'identification, mais d'après ce que je l'ai lu et ce que j'ai observé dans la console, je crois cette autorisation doit faire partie du rôle roles/container.developer
.
Merci!
Une solution pour cela? J'ai essayé [ceci] (https://stackoverflow.com/questions/42556739/service-account-throws-an-insufficient-permission-error-even-it-has-owner-priv) avec pas de chance – mllm
Type de: I J'ai compris que si je commençais avec un utilisateur hautement qualifié (un projet 'Propriétaire' dans Google Cloud), les étapes ci-dessus ont créé un compte de service qui avait accès à faire ce dont j'avais besoin. Cependant, lorsque j'utilisais un autre compte de service avec un ensemble de droits plus fin, il échouait. Il semble qu'il puisse y avoir des autorisations dérivées, mais je n'ai pas précisé exactement ce que c'est. – benschumacher
En fait, je me suis contenté de supprimer la ligne défaillante 'gcloud container clusters get-credentials devcluster'. Avoir ** aucune idée ** pourquoi cela fonctionne maintenant, mais c'est ma solution. – mllm