Résoudre les problèmes liés aux comptes de service dans GKE


Cette page explique comment résoudre les problèmes liés aux comptes de service Google Kubernetes Engine (GKE).

Restaurer le compte de service par défaut sur votre projet Google Cloud

Le compte de service par défaut de GKE, container-engine-robot, peut être dissocié accidentellement d'un projet. Le rôle d'agent de service Kubernetes Engine (roles/container.serviceAgent) est un rôle Identity and Access Management (IAM) qui accorde au compte de service les autorisations nécessaires pour gérer les ressources du cluster. Si vous supprimez cette liaison de rôle du compte de service, le compte de service par défaut est dissocié du projet, ce qui peut vous empêcher de déployer des applications et d'effectuer d'autres opérations sur le cluster.

Pour vérifier si le compte de service a été supprimé de votre projet, vous pouvez utiliser la console Google Cloud ou la Google Cloud CLI.

Console

gcloud

  • Exécutez la commande suivante :

    gcloud projects get-iam-policy PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet.

Si le tableau de bord ou la commande n'affiche pas container-engine-robot parmi vos comptes de service, le rôle est dissocié.

Pour restaurer la liaison du rôle d'agent de service Kubernetes Engine (roles/container.serviceAgent), exécutez les commandes suivantes:

PROJECT_NUMBER=$(gcloud projects describe "PROJECT_ID" \
    --format 'get(projectNumber)') \
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-${PROJECT_NUMBER?}@container-engine-robot.iam.gserviceaccount.com" \
    --role roles/container.serviceAgent

Vérifiez que la liaison de rôle est restaurée:

gcloud projects get-iam-policy $PROJECT_ID

Si vous voyez le nom du compte de service avec le rôle container.serviceAgent, la liaison de rôle est restaurée. Exemple :

- members:
  - serviceAccount:service-1234567890@container-engine-robot.iam.gserviceaccount.com
  role: roles/container.serviceAgent

Activer le compte de service Compute Engine par défaut

Le compte de service utilisé pour le pool de nœuds est généralement le compte de service Compute Engine par défaut. Si ce compte de service par défaut est désactivé, vos nœuds risquent de ne pas s'enregistrer auprès du cluster.

Pour vérifier si le compte de service est désactivé dans votre projet, vous pouvez utiliser la console Google Cloud ou gcloud CLI.

Console

gcloud

  • Exécutez la commande suivante :
gcloud iam service-accounts list  --filter="NAME~'compute' AND disabled=true"

Si le compte de service est désactivé, exécutez la commande suivante pour l'activer:

gcloud iam service-accounts enable PROJECT_ID-compute@developer.gserviceaccount.com

Remplacez PROJECT_ID par l'ID du projet.

Pour en savoir plus, consultez Résoudre les problèmes d'enregistrement de nœuds.

Erreur 400/403 : le compte n'est pas autorisé à apporter des modifications

Si votre compte de service est supprimé, une erreur d'autorisation de modification peut s'afficher. Pour savoir comment résoudre ce problème, consultez Erreur 400/403: le compte n'est pas autorisé à apporter des modifications.

Étape suivante

Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.