Déployer des images de conteneurs

Cette page explique comment déployer de nouveaux services et de nouvelles révisions dans Cloud Run.

Autorisations requises pour déployer

Vous devez disposer de l'un des rôles suivants :

Registres de conteneurs et images acceptés

La taille applicable à l'image de conteneur que vous pouvez déployer est illimitée.

Vous pouvez déployer des images de conteneurs stockées dans Container Registry ou Artifact Registry. Vous ne pouvez utiliser que les types d'images de conteneurs suivants :

Si vous stockez des images de conteneurs dans un autre type de registre de conteneurs, suivez les instructions de la section Déployer des images à partir de registres non compatibles.

Déployer un nouveau service

Vous pouvez spécifier une image de conteneur avec un tag (par exemple, gcr.io/my-project/my-image:latest) ou avec un condensé exact (par exemple, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

Le déploiement d'un service pour la première fois crée sa première révision. Notez que les révisions sont immuables. Si vous déployez à partir d'un tag d'image de conteneur, il sera transformé en condensé et la révision desservira toujours ce condensé.

Vous pouvez déployer un conteneur à l'aide de Cloud Console, de la ligne de commande gcloud ou d'un fichier de configuration YAML.

Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.

Console

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

  1. Accédez à Cloud Run

  2. Cliquez sur Create service (Créer un service) pour afficher la page Créer un service.

    create-service-image

    Dans le formulaire,

    1. Sélectionnez la région dans laquelle vous souhaitez créer votre service. Le sélecteur de région indique le niveau de tarification, la disponibilité des mappages de domaines et d'Eventarc, et met en évidence les régions avec l'impact carbone le plus faible.

    2. Saisissez le nom de service souhaité. Les noms de service doivent être uniques par région et par projet ou par cluster. Les noms de service sont visibles publiquement et ne peuvent pas être modifiés ultérieurement lorsque vous utilisez Cloud Run.

  3. Cliquez sur Suivant pour passer à la page Configurer la première révision du service :

    image

  4. Dans le formulaire :

    1. Si vous souhaitez déployer manuellement un conteneur, sélectionnez Déployer une révision à partir d'une image de conteneur existante.
    2. Pour une automatisation à des fins de déploiement continu, sélectionnez Déployer de nouvelles révisions en continu à partir d'un dépôt source et suivez les instructions pour les déploiements continus.
    3. Vous pouvez également cliquer sur Afficher les paramètres avancés et sur les onglets suivants pour définir les éléments suivants :
  5. Cliquez sur Suivant pour passer à la page Configurer le déclenchement du service :

    image

    1. Définissez les paramètres d'entrée au format voulu.

    2. Sous Authentication (Authentification) :

      • Si vous créez une API ou un site Web public, sélectionnez Allow unauthenticated invocations (Autoriser les appels non authentifiés). En sélectionnant cette option, le rôle Demandeur IAM est attribué à l'identifiant spécial allUser. Vous pouvez utiliser IAM pour modifier ce paramètre ultérieurement après avoir créé le service.
      • Si vous souhaitez qu'un service sécurisé soit protégé par authentification, sélectionnez Require authentication (Exiger l'authentification).
  6. Cliquez sur Créer pour déployer l'image sur Cloud Run, puis attendez la fin du déploiement.

  7. Cliquez sur le lien URL affiché pour ouvrir le point de terminaison unique et stable de votre service déployé.

Ligne de commande

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

  1. Exécutez la commande suivante :

    gcloud run deploy SERVICE --image IMAGE_URL

    • Remplacez SERVICE par le nom du service sur lequel vous souhaitez déployer l'image. Si le service n'existe pas encore, cette commande le crée lors du déploiement. Vous pouvez omettre ce paramètre, mais dans ce cas le nom du service vous sera demandé.
    • Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Notez que si vous ne fournissez pas l'option --image, la commande de déploiement tente d'effectuer le déploiement à partir du code source.

      Si vous créez une API ou un site Web public, vous pouvez autoriser les appels non authentifiés de votre service à l'aide de l'option --allow-unauthenticated. Cela attribue le rôle IAM Demandeur Cloud Run à allUsers. Vous pouvez également spécifier --no-allow-unauthenticated pour interdire les appels non authentifiés. Si vous omettez l'une de ces options, vous êtes invité à confirmer l'exécution de la commande deploy.

  2. Patientez jusqu'à la fin du déploiement. Une fois l'opération réussie, un message de réussite s'affiche indiquant l'URL du service déployé.

Notez que pour effectuer un déploiement dans un emplacement différent de celui que vous avez défini à l'aide des propriétés run/region et gcloud, vous devez exécuter les commandes suivantes :

  • gcloud run deploy SERVICE --region REGION

YAML

Vous pouvez stocker votre spécification de service dans un fichier YAML, puis la déployer à l'aide de la ligne de commande gcloud.

  1. Créez un fichier service.yaml avec le contenu suivant :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Remplacez les éléments suivants :

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE par l'URL de votre image de conteneur

    Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.

  2. Déployez le nouveau service à l'aide de la commande suivante :

    gcloud run services replace service.yaml
  3. Vous pouvez éventuellement rendre votre service public si vous souhaitez autoriser un accès non authentifié à celui-ci.

Cloud Code

Pour déployer avec Cloud Code, consultez les guides IntelliJ et Visual Studio Code.

Terraform

Si vous utilisez Terraform, vous pouvez définir votre service dans une configuration Terraform à l'aide de la ressource google_cloud_run_service du fournisseur Google Cloud Platform.

  1. Créez un fichier main.tf avec le contenu suivant :

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_cloud_run_service" "default" {
        name     = "SERVICE"
        location = "REGION"
    
        metadata {
          annotations = {
            "run.googleapis.com/client-name" = "terraform"
          }
        }
    
        template {
          spec {
            containers {
              image = "gcr.io/PROJECT-ID/IMAGE"
            }
          }
        }
     }
    
     data "google_iam_policy" "noauth" {
       binding {
         role = "roles/run.invoker"
         members = ["allUsers"]
       }
     }
    
     resource "google_cloud_run_service_iam_policy" "noauth" {
       location    = google_cloud_run_service.default.location
       project     = google_cloud_run_service.default.project
       service     = google_cloud_run_service.default.name
    
       policy_data = data.google_iam_policy.noauth.policy_data
    }
    

    Remplacez les éléments suivants :

    • PROJECT-ID par l'ID du projet Google Cloud
    • REGION par la région Google Cloud
    • SERVICE par le nom de votre service Cloud Run
    • IMAGE par le nom de votre image de conteneur

    La configuration ci-dessus autorise l'accès public (l'équivalent de --allow-unauthenticated). Pour rendre le service privé, supprimez les sections google_iam_policy et google_cloud_run_service_iam_policy.

  2. Initialisez Terraform :

    terraform init
  3. Appliquez la configuration Terraform :

    terraform apply

    Confirmez que vous souhaitez appliquer les actions décrites en saisissant yes.

Emplacements Cloud Run

Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute vos services Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.

Lors de la sélection de la région dans laquelle exécuter vos services Cloud Run, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité. Vous pouvez généralement sélectionner la région la plus proche de vos utilisateurs, mais vous devez tenir compte de l'emplacement des autres produits Google Cloud utilisés par votre service Cloud Run. L'utilisation conjointe de produits Google Cloud dans plusieurs emplacements peut avoir une incidence sur la latence et le coût de votre service.

Cloud Run est disponible dans les régions suivantes :

Soumis aux tarifs de niveau 1

Soumis aux tarifs de niveau 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Séoul, Corée du Sud)
  • asia-southeast1 (Singapour)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Inde)
  • asia-south2 (Delhi, Inde)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsovie, Pologne)
  • europe-west2 (Londres, Royaume-Uni)
  • europe-west3 (Francfort, Allemagne)
  • europe-west6 (Zurich, Suisse) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast1 (Montréal) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (São Paulo, Brésil) Icône Feuille Faibles émissions de CO2
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Si vous avez déjà créé un service Cloud Run, vous pouvez afficher la région dans le tableau de bord Cloud Run de Cloud Console.

Lors du déploiement, l'agent de service Cloud Run doit pouvoir accéder au conteneur déployé, ce qui est le cas par défaut.

Chaque service dispose d'une URL unique et permanente qui ne changera pas au fil du temps lorsque vous déploierez de nouvelles révisions.

Déployer une nouvelle révision d'un service existant

Vous pouvez déployer une nouvelle révision à l'aide de Cloud Console, de la ligne de commande gcloud ou d'un fichier de configuration YAML.

Notez que la modification des paramètres de configuration entraîne la création d'une révision, même si l'image du conteneur ne change pas. Chaque révision créée est immuable.

Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.

Console

Pour déployer une nouvelle révision d'un service existant, procédez comme suit :

  1. Accédez à Cloud Run

  2. Recherchez le service que vous souhaitez mettre à jour dans la liste des services, puis cliquez dessus pour en afficher les détails.

  3. Cliquez sur MODIFIER ET DÉPLOYER LA NOUVELLE RÉVISION. Le formulaire de déploiement de la révision s'affiche :

    image

  4. Si nécessaire, fournissez l'URL de la nouvelle image de conteneur que vous souhaitez déployer.

  5. Vous pouvez également utiliser les onglets pour définir les éléments suivants :

  6. Pour envoyer l'ensemble du trafic vers la nouvelle révision, cochez la case intitulée Diffuser immédiatement la révision. Pour déployer progressivement une nouvelle révision, décochez cette case : le trafic ne sera pas envoyé à la nouvelle révision. Suivez les instructions pour les déploiements progressifs à l'issue du déploiement.

  7. Cliquez sur DÉPLOYER et attendez la fin du déploiement.

Ligne de commande

Pour utiliser la ligne de commande, vous devez déjà avoir configuré la ligne de commande gcloud.

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

  1. Exécutez la commande suivante :

    gcloud run deploy SERVICE --image IMAGE_URL

    • Remplacez SERVICE par le nom du service sur lequel vous déployez l'image. Vous pouvez omettre ce paramètre, mais dans ce cas le nom du service vous sera demandé.
    • Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest.

      Le suffixe de révision est attribué automatiquement aux nouvelles révisions. Si vous souhaitez spécifier votre propre suffixe de révision, utilisez le paramètre de ligne de commande gcloud --revision-suffix.

  2. Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, un message de réussite indiquant l'URL du service déployé s'affiche.

YAML

Si vous devez télécharger ou consulter la configuration d'un service existant, exécutez la commande suivante pour enregistrer les résultats dans un fichier YAML :

gcloud run services describe SERVICE --format export > service.yaml

Dans un fichier YAML de configuration de service, modifiez les attributs enfants spec.template en fonction de vos besoins pour mettre à jour les paramètres de révision, puis déployez la nouvelle révision :

gcloud run services replace service.yaml

Cloud Code

Pour déployer une nouvelle révision d'un service existant avec Cloud Code, consultez les guides IntelliJ et Visual Studio Code.

Terraform

Vous devez déjà avoir configuré Terraform conformément à l'exemple Déployer un nouveau service.

  1. Apportez une modification au fichier de configuration.

  2. Appliquez la configuration Terraform :

    terraform apply

    Confirmez que vous souhaitez appliquer les actions décrites en saisissant yes.

Emplacements Cloud Run

Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute vos services Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.

Lors de la sélection de la région dans laquelle exécuter vos services Cloud Run, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité. Vous pouvez généralement sélectionner la région la plus proche de vos utilisateurs, mais vous devez tenir compte de l'emplacement des autres produits Google Cloud utilisés par votre service Cloud Run. L'utilisation conjointe de produits Google Cloud dans plusieurs emplacements peut avoir une incidence sur la latence et le coût de votre service.

Cloud Run est disponible dans les régions suivantes :

Soumis aux tarifs de niveau 1

Soumis aux tarifs de niveau 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Séoul, Corée du Sud)
  • asia-southeast1 (Singapour)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Inde)
  • asia-south2 (Delhi, Inde)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsovie, Pologne)
  • europe-west2 (Londres, Royaume-Uni)
  • europe-west3 (Francfort, Allemagne)
  • europe-west6 (Zurich, Suisse) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast1 (Montréal) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (São Paulo, Brésil) Icône Feuille Faibles émissions de CO2
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Si vous avez déjà créé un service Cloud Run, vous pouvez afficher la région dans le tableau de bord Cloud Run de Cloud Console.

Déployer des images à partir d'autres projets Google Cloud

Vous pouvez déployer des images de conteneurs à partir d'autres projets Google Cloud si vous définissez les autorisations IAM appropriées :

  1. Dans Cloud Console, ouvrez le projet pour votre service Cloud Run.

  2. Accéder à la page IAM

  3. Cochez la case intitulée Inclure les attributions de rôles fournies par Google.

  4. Copiez l'adresse e-mail de l'agent de service Cloud Run. Elle porte le suffixe @ serverless-robot-prod.iam.gserviceaccount.com.

  5. Ouvrez le projet qui contient le registre de conteneurs que vous souhaitez utiliser.

  6. Accéder à la page IAM

  7. Cliquez sur Ajouter pour ajouter une entité principale.

  8. Dans la zone de texte Nouvelles entités principales, collez l'adresse e-mail du compte de service que vous avez copié précédemment.

  9. Dans la liste déroulante Sélectionner un rôle, si vous utilisez Container Registry, sélectionnez le rôle Stockage -> Lecteur des objets de l'espace de stockage. Si vous utilisez Artifact Registry, sélectionnez le rôle Artifact Registry -> Lecteur Artifact Registry.

  10. Déployez l'image de conteneur sur le projet contenant votre service Cloud Run.

Déployer des images à partir de registres non compatibles

Si vous stockez des images de conteneurs dans un registre de conteneurs public ou privé non compatible, vous pouvez les transférer de manière temporaire vers Artifact Registry à l'aide de docker push afin de les déployer sur Cloud Run. L'image de conteneur est importée par Cloud Run lors du déploiement. Par conséquent, après le déploiement, vous pouvez supprimer l'image d'Artifact Registry à l'aide de docker image rm.

Étape suivante

Après avoir déployé un nouveau service, vous pouvez effectuer les opérations suivantes :

Vous pouvez automatiser la création et le déploiement de vos services Cloud Run avec les déclencheurs Cloud Build.