Lorsque vous déployez votre code source dans Cloud Run, ce code source est stocké dans un bucket Cloud Storage. Cloud Build compile ensuite automatiquement votre code dans une image de conteneur, puis transfère cette image dans un registre d'images. Chaque compilation s'exécute sur son propre nœud de calcul. Cloud Run importe l'image créée lors du déploiement.
Si vous souhaitez personnaliser le pool de nœuds de calcul de compilation que Cloud Build utilise pour un contexte de compilation sécurisé VPC Service Controls, vous devez personnaliser le pool de nœuds de calcul. Cette page s'adresse aux développeurs de plates-formes qui déploient des services ou des fonctions Cloud Run à partir de la source à l'aide de la Google Cloud CLI, et qui configurent des pools privés utilisés par Cloud Build. Les indicateurs de la gcloud CLI pour les pools de nœuds de calcul sont compatibles avec les déploiements de code source (--source
), mais pas avec les déploiements d'images de conteneur (--image
).
Avant de commencer
-
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Une fois l'API Cloud Run Admin activée, le compte de service Compute Engine par défaut est créé automatiquement.
Rôles requis
Vous ou votre administrateur devez attribuer les rôles IAM suivants au compte déployeur et au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte déployeur
Pour obtenir les autorisations nécessaires pour compiler et déployer à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur de source Cloud Run (
roles/run.sourceDeveloper
) sur votre projet - Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer
) sur votre projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service Cloud Run
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder
) au compte de service Compute Engine par défaut sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Remplacez PROJECT_NUMBER
par le numéro de votre projet Google Cloudet PROJECT_ID
par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.
L'attribution du rôle "Compilateur Cloud Run" au compte de service Compute Engine par défaut prend quelques minutes à se propager.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Sécuriser votre build à l'aide de pools privés
Par défaut, Cloud Build dispose d'un accès à Internet illimité pendant le processus de compilation. Si vous avez configuré un périmètre VPC Service Controls (VPC SC) et que vous souhaitez limiter l'accès de la compilation uniquement aux dépendances stockées dans ce périmètre (par exemple, les packages npm), vous pouvez utiliser la fonctionnalité de pools de nœuds de calcul privés de Cloud Build.
En général, vous pouvez utiliser la procédure suivante pour configurer votre pool privé :
- Créez votre pool de nœuds de calcul privé. Consultez la page Créer et gérer des pools privés.
Configurez votre périmètre VPC Service Controls. Consultez la page Utiliser VPC Service Controls.
Si votre pool de nœuds de calcul privé se trouve dans un projet différent de celui de votre service Cloud Run, vous devez attribuer à l'agent de service Cloud Run (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
) le rôle Utilisateur de pool de nœuds de calcul Cloud Build (cloudbuild.workerPoolUser
) afin que le service Cloud Build puisse accéder au pool de nœuds de calcul.gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role roles/cloudbuild.workerPoolUser
Remplacez :
- PROJECT_NUMBER par le numéro du projet dans lequel le service est exécuté.
- PRIVATE_POOL_PROJECT_ID par l'ID du projet dans lequel se trouve le pool de nœuds de calcul. Pour en savoir plus, consultez la page Exécuter des compilations dans un pool privé.
Déployez votre service à partir de la source pour le compiler à l'aide d'un pool privé :
gcloud
Pour spécifier un pool privé à compiler lors du déploiement à partir du code source, utilisez l'option
--build-worker-pool
:gcloud run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
Remplacez :
- SERVICE par le nom de votre service.
- WORKER_POOL par le nom du pool privé.
Si vous déployez une fonction, ajoutez l'option
--function
avec le point d'entrée de la fonction à partir de votre code source.
Supprimer des pools de nœuds de calcul de compilation
Vous pouvez supprimer des pools de nœuds de calcul de compilation pour des services existants.
gcloud
Pour effacer le pool de nœuds de calcul Cloud Build pour les déploiements sources, utilisez l'indicateur --clear-build-worker-pool
:
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
Remplacez :
- SERVICE par le nom de votre service.
- WORKER_POOL par le nom du pool privé que vous souhaitez supprimer.
Si vous déployez une fonction, ajoutez l'option --function
avec le point d'entrée de la fonction à partir de votre code source.