Comptes de service Google Cloud Deploy

Ce document décrit les comptes de service permettant d'exécuter Google Cloud Deploy et d'appeler Google Cloud Deploy pour exécuter diverses opérations.

Google Cloud Deploy utilise deux comptes de service:

  • Agent de service Google Cloud Deploy

    Google Cloud Deploy utilise ce compte de service pour interagir avec votre projet. Vous ne pouvez pas remplacer cet agent de service par un autre compte de service, mais vous pouvez modifier les autorisations associées, par exemple lorsque vous utilisez des ressources en dehors du projet (telles qu'un compte de service ou un pool de nœuds de calcul Cloud Build).

  • Compte de service d'exécution Google Cloud Deploy

    Google Cloud Deploy utilise ce compte de service pour exécuter des opérations de rendu et de déploiement dans Cloud Build. Ce compte doit disposer d'autorisations suffisantes pour lire et écrire dans le bucket Cloud Storage, et pour accéder aux cibles de déploiement.

    Le compte de service par défaut pour l'exécution est le compte de service Compute Engine par défaut. Vous pouvez spécifier un autre compte de service dans la configuration cible.

Consultez la page Créer et gérer des comptes de service pour savoir comment modifier les autorisations des comptes de service et créer un autre compte de service.

Agent de service Google Cloud Deploy

L'agent de service Google Cloud Deploy est un compte de service que Google Cloud Deploy utilise pour interagir avec d'autres services Google Cloud associés au déploiement. Ces services incluent Cloud Build, Pub/Sub et Cloud Audit Logs.

Le nom de ce compte de service suit le modèle suivant:

service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com

Vous ne pouvez pas remplacer l'agent de service par un autre compte de service. Toutefois, vous devrez peut-être ajouter des autorisations, par exemple pour autoriser l'accès à un pool privé dans un autre projet, configuré dans le cadre d'un environnement d'exécution.

Compte de service d'exécution Google Cloud Deploy

Par défaut, Google Cloud Deploy s'exécute à l'aide du compte de service Compute Engine par défaut. Ce compte de service dispose des autorisations suffisantes dans le projet qui le contient pour afficher les fichiers manifestes et les déployer sur vos cibles.

Le nom de ce compte de service suit le modèle suivant:

[project-number]-compute@developer.gserviceaccount.com

Ce compte de service par défaut dispose d'autorisations étendues. Il est recommandé de modifier votre environnement d'exécution afin que Google Cloud Deploy s'exécute sous l'identité d'un autre compte de service. Vous pouvez modifier le compte de service d'exécution pour chaque cible à l'aide de la propriété executionConfigs.privatePool.serviceAccount ou de la propriété executionConfigs.defaultPool.serviceAccount dans la définition de cible.

Tout compte de service que vous définissez pour ces propriétés doit disposer du rôle roles/clouddeploy.jobRunner dans le projet Cloud Deploy. Si le compte de service d'exécution par défaut ne dispose pas de cette autorisation, exécutez la commande suivante:

 gcloud projects add-iam-policy-binding PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"

Les comptes de service à créer

Si vous choisissez de ne pas utiliser le compte de service d'exécution par défaut pour le rendu et le déploiement, vous devez créer un ou plusieurs comptes de service alternatifs à utiliser. Il s'agit des comptes de service dans lesquels Google Cloud Deploy s'exécute, et ils sont configurés dans la configuration cible.

Vous pourriez par exemple avoir un ou plusieurs comptes de service spécifiques à déployer sur des cibles restreintes, comme une cible de production.

Une approche possible consiste à utiliser des comptes de service distincts par pipeline de diffusion. Chacun de ces comptes de service inclut des rôles disposant des autorisations nécessaires pour effectuer le rendu et le déploiement.

Chaque compte de service alternatif que vous créez doit se trouver dans le projet dans lequel le service Google Cloud Deploy est exécuté. Il s'agit du projet dans lequel vous avez activé l'API Google Cloud Deploy.

Autorisations requises

  • Le compte de service utilisé pour les configurations de rendu doit disposer des autorisations suffisantes pour accéder au bucket Cloud Storage dans lequel vos ressources Google Cloud Deploy sont stockées (pipelines de diffusion, versions, déploiements).

    Le rôle roles/clouddeploy.jobRunner inclut toutes les autorisations dont le compte de service de rendu (privatePool ou defaultPool) a besoin.

  • Le compte de service utilisé pour le déploiement doit disposer des autorisations suffisantes pour déployer sur le cluster cible et accéder au bucket Cloud Storage.

  • Le compte de service qui appelle Google Cloud Deploy pour créer une version doit disposer du rôle clouddeploy.releaser. Il doit également contenir l'autorisation iam.serviceAccount.actAs pour utiliser le compte de service qui affiche les fichiers manifestes (par exemple, via le rôle roles/iam.serviceAccountUser).

  • Le compte de service qui appelle Google Cloud Deploy pour promouvoir une version ou créer un rollout doit disposer de l'autorisation iam.serviceAccount.actAs pour utiliser le compte de service qui se déploie sur les cibles.

Étape suivante