Cloud Run vous permet d'exécuter des images sans état dans un environnement sans serveur. Cloud Build vous permet de déployer des images depuis Container Registry (obsolète) et Artifact Registry vers Cloud Run. Vous pouvez déployer une image existante, créer et déployer une image, ou automatiser le déploiement.
Avant de commencer
-
Enable the Cloud Build, Cloud Run, Container Registry, and Resource Manager APIs.
Préparez le code source de votre application. Votre code source doit être stocké dans un dépôt, tel que Cloud Source Repositories, GitHub ou Bitbucket.
Pour exécuter les commandes
gcloud
sur cette page, installez Google Cloud CLI.Si vous utilisez VPC Service Controls, configurez un pool privé dans le périmètre VPC Service Controls. Vous devez également configurer Cloud Run pour VPC Service Controls.
Autorisations requises pour la gestion de l'authentification et des accès
Pour obtenir les autorisations nécessaires pour déployer sur Cloud Run à l'aide de Cloud Build, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le compte de service Cloud Build par défaut:
-
Développeur Cloud Run (
roles/run.developer
) -
Rédacteur de journaux (
roles/logging.logWriter
) -
Rédacteur Artifact Registry (
roles/artifactregistry.writer
) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) -
Administrateur de l'espace de stockage (
roles/storage.admin
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Créer et déployer une image
Cloud Build vous permet de créer une image, de la stocker dans Artifact Registry, puis de la déployer dans Cloud Run.
Pour créer et déployer une image:
Dans le répertoire racine de votre projet, créez un fichier de configuration nommé
cloudbuild.yaml
.Dans le fichier de configuration de compilation, ajoutez les étapes de compilation
docker
pour créer l'image et la transférer dans Artifact Registry, puis ajoutez une étape de compilationgcloud
pour appeler la commandegcloud run deploy
permettant de déployer l'image sur Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
Où :
REPOSITORY
est le nom du dépôt Artifact Registry à partir duquel vous déployez votre image.LOCATION
correspond à l'emplacement de votre dépôt Artifact Registry, par exempleus-east1
.PROJECT_ID
correspond à l' Google CloudID de projet dans lequel votre image est stockée.SERVICE_NAME
correspond au nom du service Cloud Run.SERVICE_REGION
correspond à la région du service Cloud Run que vous déployez.IMAGE
correspond au nom de votre image dans Artifact Registry.
Accédez au répertoire racine de votre projet et exécutez la commande suivante, où
LOCATION
est l'une des régions de compilation compatibles pour exécuter la compilation:gcloud builds submit --region=LOCATION
Une fois l'opération réussie, un message de réussite s'affiche indiquant l'URL du service déployé.
Déploiement continu
Vous pouvez automatiser le déploiement de votre logiciel dans Cloud Run en créant des déclencheurs Cloud Build. Vous pouvez configurer vos déclencheurs pour créer et déployer des images chaque fois que vous mettez à jour votre code source.
Pour automatiser votre déploiement, procédez comme suit :
Dans la racine de votre dépôt, ajoutez un fichier de configuration nommé
cloudbuild.yaml
contenant des étapes permettant de créer l'image, puis transférez-la dans Container Registry et appelez la commandegcloud run deploy
:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - 'region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
Où :
REPOSITORY
est le nom du dépôt Artifact Registry à partir duquel vous déployez votre image.LOCATION
correspond à l'emplacement de votre dépôt Artifact Registry, par exempleus-east1
.PROJECT_ID
correspond à l' Google CloudID de projet dans lequel votre image est stockée.SERVICE_NAME
correspond au nom du service Cloud Run.SERVICE_REGION
correspond à la région du service Cloud Run que vous déployez.IMAGE
correspond au nom de votre image dans Artifact Registry.
La variable de substitution
$COMMIT_SHA
est renseignée par Cloud Build lorsqu'elle est déclenchée à partir d'un dépôt Git.Créez un déclencheur de compilation à l'aide du fichier de configuration créé à l'étape précédente:
Ouvrez la page Déclencheurs :
Cliquez sur Créer un déclencheur.
Dans le champ Nom, saisissez le nom du déclencheur.
Sous Région, sélectionnez la région de votre déclencheur.
Sous Événement, sélectionnez l'événement du dépôt pour démarrer le déclencheur.
Sous Source, sélectionnez le dépôt et le nom de la branche ou du tag qui lancera votre déclencheur. Pour en savoir plus sur la spécification des branches à compiler automatiquement, consultez la page Créer un déclencheur de compilation.
Sous Configuration, sélectionnez Fichier de configuration Cloud Build (YAML ou JSON).
Dans le champ Emplacement du fichier de configuration Cloud Build, saisissez
cloudbuild.yaml
après la barre oblique (/
).Cliquez sur Créer pour enregistrer le déclencheur de compilation.
Désormais, lorsque vous envoyez du nouveau code dans votre dépôt, Cloud Build appelle une compilation et déploie le service dans Cloud Run.
Pour en savoir plus sur la création de déclencheurs Cloud Build, consultez la page Créer et gérer des déclencheurs de compilation.
Utiliser des autorisations IAM minimales
Lorsqu'une image est déployée sur un service Cloud Run, elle s'exécute à l'aide de l'identité du compte de service d'exécution du service Cloud Run. Comme Cloud Build peut déployer automatiquement de nouvelles images, il doit pouvoir agir en tant que compte de service d'exécution pour le service Cloud Run.
Pour accorder à Cloud Build un accès limité permettant d'effectuer des déploiements sur un service Cloud Run, procédez comme suit:
Console
Accédez à la page Comptes de service de la console Google Cloud :
Cliquez sur l'adresse e-mail du compte de service d'exécution de votre service Cloud Run (par défaut, il s'agit de
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Cliquez sur l'onglet Autorisations.
Cliquez sur
Accorder l'accès.Saisissez le compte de service Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
).Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle Comptes de service > Utilisateur du compte de service.
Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud iam service-accounts add-iam-policy-binding
, où PROJECT_NUMBER est l'ID numérique de votre projet :
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Remplacez PROJECT_NUMBER par l'ID numérique de votre projet.
Si vous utilisez Cloud Run avec une identité de service personnalisée, remplacez PROJECT_NUMBER-compute@developer.gserviceaccount.com
par l'adresse de votre compte de service.
Consultez la section Autorisations de déploiement pour plus d'informations.
Exemples de code
Voici quelques exemples de dépôts, chacun d'entre eux contenant un exemple d'application et un fichier de configuration de compilation permettant de déployer l'application dans Cloud Run :
- deploy-prebuilt : exemple de code qui montre comment déployer une image prédéfinie sur Cloud Run.
- run-example-builddeploy : exemple de code qui explique comment créer et déployer une image sur Cloud Run.
Étape suivante
- Découvrez comment utiliser Cloud Deploy pour déployer sur Cloud Run.
- Découvrez comment déployer sur GKE
- Découvrez comment déployer sur des fonctions Cloud Run.
- Découvrez comment déployer sur App Engine
- Découvrez comment déployer sur Firebase
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez comment résoudre les erreurs de compilation.