Dockerfile
à sa racine.
Pour automatiser le déploiement à partir de Git avec Cloud Build, procédez comme suit :
Créez une configuration Cloud Build qui effectue les opérations suivantes :
- Création de l'image de conteneur
- Transfert de l'image vers Container Registry (Obsolète)
- Déploiement d'une nouvelle révision sur le service Cloud Run
Pour ce faire, ajoutez un fichier nommé
cloudbuild.yaml
à la racine de votre dépôt, avec le contenu suivant :steps: # build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.'] # push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'] # Deploy container image to Cloud Run - name: 'gcr.io/cloud-builders/gcloud' args: - 'run' - 'deploy' - '[SERVICE-NAME]' - '--image' - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA' - '--region' - '[REGION]' images: - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
Remplacer
- [SERVICE-NAME] par le nom du service Cloud Run.
- [REGION] par la région du service Cloud Run que vous déployez.
L'utilisation de 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.Attribuez les rôles Administrateur Cloud Run et Utilisateur du compte de service au compte de service Cloud Build :
Ouvrez la page des paramètres Cloud Build dans Google Cloud Console :
Dans le panneau des autorisations du compte de service, définissez le rôle Administrateur Cloud Run sur l'état Activé :
Sélectionnez Accorder l'accès à tous les comptes de service pour attribuer le rôle Utilisateur du compte de service à tous les comptes de service du projet sur votre page.
Cliquez sur Déclencheurs dans le panneau de navigation de gauche pour ouvrir la page Déclencheurs :
Accéder à la page "Déclencheurs"
- Cliquez sur Créer un déclencheur.
- Dans le champ Nom, saisissez le nom du 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 Fichier de configuration Cloud Build (yaml ou json), sélectionnez Fichier de configuration Cloud Build.
- 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.
Vous avez terminé. Désormais, chaque fois que vous effectuez un transfert vers votre dépôt, un build et un déploiement sont automatiquement appelés dans votre service Cloud Run.
Déploiement continu à l'aide des autorisations IAM minimales
Lorsqu'un conteneur est déployé sur un service Cloud Run, il s'exécute sous l'identité du compte de service d'exécution pour ce service Cloud Run. Comme Cloud Build peut déployer automatiquement de nouveaux conteneurs, 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 (UI)
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 dans 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
:
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.
Étape suivante
- Découvrez comment déployer ou publier une image de conteneur dans un registre privé d'un autre projet dans la section Définir des autorisations de compte de service.