Déployer sur Cloud Run

Cette page explique comment déployer automatiquement Cloud Run et Cloud Run pour Anthos à l'aide de Cloud Build. Si vous êtes un nouvel utilisateur de Cloud Build, commencez par lire les guides de démarrage rapide et la présentation de la configuration des compilations.

Cloud Run et Cloud Run pour Anthos sont des plates-formes de calcul qui vous permettent d'exécuter des conteneurs sans état dans un environnement sans serveur. À l'aide de Cloud Build, vous pouvez déployer des images de conteneurs depuis Container Registry 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

  • Activer les API Cloud Build, Cloud Run, Container Registry, and Resource Manager.

    Activer les API

Autorisations IAM requises

Si votre image est stockée dans le même projet Cloud que celui vers lequel vous souhaitez déployer ou si votre image est publique dans Container Registry, vous devez disposer des autorisations IAM suivantes :

Cloud Run

Pour déployer sur Cloud Run, accordez au compte de service Cloud Build les rôles Administrateur et compte de service Cloud Run:

  1. Ouvrez la page des paramètres Cloud Build dans Cloud Console :

    Accéder à la page "Paramètres" de Cloud Build

  2. Dans le panneau "Service account permissions" (Autorisations de compte de service), définissez l'état du rôle Cloud Run Admin (Administrateur Cloud Run) sur ENABLED (ACTIVÉ) :

    Capture d'écran de la page des autorisations de compte de service

  3. Dans le pop-up "Des étapes supplémentaires peuvent être requises", cliquez sur ACCORDER L'ACCÈS À TOUS LES COMPTES DE SERVICE.

Cloud Run for Anthos

Pour effectuer un déploiement dans Cloud Run for Anthos, attribuez le rôle "Développeur sur Kubernetes Engine" au compte de service Cloud Build :

  1. Ouvrez la page des paramètres Cloud Build dans Cloud Console :

    Accéder à la page "Paramètres" de Cloud Build

  2. Dans le panneau "Service account permissions" (Autorisations de compte de service), définissez l'état du rôle Kubernetes Engine Developer (Développeur sur Kubernetes Engine) sur ENABLED (ACTIVÉ) :

    Capture d'écran de la page des autorisations de compte de service

Si votre image est stockée dans un autre projet Cloud que celui vers lequel vous souhaitez déployer, des autorisations IAM supplémentaires sont requises, comme décrit dans la section Déployer des images à partir d'autres projets Google Cloud.

Créer et déployer un conteneur

Cloud Build vous permet de créer l'image de conteneur, de la stocker dans Container Registry et de la déployer dans Cloud Run.

Pour créer et déployer une image de conteneur, procédez comme suit :

  1. Dans le répertoire racine de votre projet, créez un fichier de configuration nommé cloudbuild.yaml.

  2. Dans le fichier de configuration de compilation, ajoutez les étapes de compilation docker pour créer l'image et la transférer dans Container Registry, puis ajoutez une étape de compilation gcloud pour appeler la commande gcloud run deploy permettant de déployer l'image sur Cloud Run :

    Cloud Run

    steps:
    # Build the container image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.']
    # Push the container image to Container Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/PROJECT_ID/IMAGE']
    # Deploy container image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE-NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'REGION']
    images:
    - gcr.io/PROJECT_ID/IMAGE
    

    Où :

    • SERVICE-NAME correspond au nom du service Cloud Run.
    • REGION correspond à la région du service Cloud Run que vous déployez.
    • PROJECT_ID correspond à l'ID de projet Google Cloud dans lequel votre image est stockée.
    • IMAGE correspond au nom de votre image dans Container Registry.

    Cloud Run for Anthos

    steps:
    # Build the container image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.']
    # Push the container image to Container Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/PROJECT_ID/IMAGE']
    # Deploy container image to Cloud Run for Anthos
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE-NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--cluster', 'CLUSTER', '--cluster-location', 'CLUSTER_LOCATION', '--platform', 'gke']
    images:
    - gcr.io/PROJECT_ID/IMAGE
    

    Où :

    • SERVICE-NAME correspond au nom du service Cloud Run.
    • CLUSTER est le nom du cluster Cloud Run pour Anthos.
    • CLUSTER_LOCATION est l'emplacement de votre cluster Cloud Run pour Anthos.
    • PROJECT_ID correspond à l'ID de projet Google Cloud dans lequel votre image est stockée.
    • IMAGE correspond au nom de votre image dans Container Registry.
  3. Accédez au répertoire racine de votre projet, puis exécutez la commande suivante :

     gcloud builds submit
    

Une fois l'opération réussie, un message s'affiche indiquant l'URL du service déployé.

Déploiement continu

Vous pouvez automatiser le déploiement de votre logiciel dans Cloud Run et Cloud Run pour Anthos 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:

  1. Dans la racine de votre dépôt, ajoutez un fichier de configuration contenant des étapes permettant de créer l'image, puis transférez-la dans Container Registry et appelez la commande gcloud run deploy :

    Cloud Run

     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/google.com/cloudsdktool/cloud-sdk'
       entrypoint: 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'
    

    Où :

    • SERVICE-NAME correspond au nom du service Cloud Run.
    • REGION correspond à la région du service Cloud Run que vous déployez.

    Cloud Run for Anthos

     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 for Anthos
     - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
       entrypoint: gcloud
       args:
       - 'run'
       - 'deploy'
       - 'SERVICE-NAME'
       - '--image'
       - 'gcr.io/$PROJECT_ID/SERVICE-NAME:$COMMIT_SHA'
       - '--cluster'
       - 'CLUSTER'
       - '--cluster-location'
       - 'CLUSTER_LOCATION'
       - '--platform'
       - 'gke'
     images:
     - 'gcr.io/$PROJECT_ID/SERVICE-NAME:$COMMIT_SHA'
    

    Où :

    • SERVICE-NAME correspond au nom du service Cloud Run.
    • CLUSTER est le nom du cluster Cloud Run pour Anthos.
    • CLUSTER_LOCATION est l'emplacement de votre cluster Cloud Run pour Anthos.

    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.

  2. Créez un déclencheur de compilation à l'aide du fichier de configuration créé à l'étape précédente :

    1. Ouvrez la page Déclencheurs :

      Accéder à la page "Déclencheurs"

    2. Cliquez sur Créer un déclencheur.

    3. Dans le champ Nom, saisissez le nom du déclencheur.

    4. Sous Événement, sélectionnez l'événement du dépôt pour démarrer le déclencheur.

    5. 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.

    6. Sous Configuration, sélectionnez Fichier de configuration Cloud Build (yaml ou json).

    7. Dans le champ Emplacement du fichier de configuration Cloud Build, saisissez cloudbuild.yaml après la barre oblique (/).

    8. Cliquez sur Créer pour enregistrer le déclencheur de compilation.

  3. 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.

Chaque fois que vous transmettez du nouveau code dans votre dépôt, vous déclenchez automatiquement une compilation et un déploiement dans votre service 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'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

  1. Accédez à la page Comptes de service de Google Cloud Console :

    Accéder à la page "Comptes de service"

  2. Sélectionnez le compte de service d'exécution de votre service Cloud Run (par défaut, il s'agit de PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. Cliquez sur Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

  4. Cliquez sur le bouton Ajouter un membre.

  5. Saisissez le compte de service Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com).

  6. Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle Comptes de service > Utilisateur du compte de service.

  7. 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 :

Étape suivante