Déployer des images de conteneur dans des services Cloud Run

Cette page explique comment déployer des images de conteneur dans un nouveau service Cloud Run ou dans une nouvelle version d'un service Cloud Run existant.

L'image de conteneur est importée par Cloud Run lors du déploiement. Cloud Run conserve cette copie de l'image de conteneur tant qu'elle est utilisée par une révision de diffusion. Les images de conteneur ne sont pas extraites de leur dépôt de conteneurs lorsqu'une nouvelle instance Cloud Run est démarrée.

Pour obtenir un exemple de déploiement d'un nouveau service, consultez la section Guide de démarrage rapide sur le déploiement d'un exemple de conteneur.

Avant de commencer

Si vous êtes soumis à une règle d'administration de restriction de domaine limitant les appels non authentifiés pour votre projet, vous devez accéder au service déployé comme décrit dans la section Tester les services privés.

Rôles requis

Pour obtenir les autorisations nécessaires pour déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :

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.

Registres de conteneurs et images acceptés

Vous pouvez utiliser directement des images de conteneurs stockées dans Artifact Registry, ou des images publiques provenant de Docker Hub ou de GitHub Container Registry. Google recommande d'utiliser Artifact Registry. Les images publiques de GitHub Container Registry et les images Docker Hub sont mises en cache pendant une heure maximum.

Vous pouvez utiliser des images de conteneurs provenant d'autres registres publics ou privés (tels que JFrog Artifactory ou Nexus), ou des images privées de GitHub Container Registry, en configurant un dépôt Artifact Registry distant.

Envisagez d'utiliser Docker Hub uniquement pour déployer des images de conteneurs populaires, telles que des images officielles Docker ou des images OSS sponsorisées par Docker. Pour accroître la disponibilité, Google recommande de déployer ces images Docker Hub ou GitHub Container Registry à l'aide d'un dépôt Artifact Registry distant.

Cloud Run ne prend pas en charge les calques d'image de conteneur de plus de 9,9 Go lors du déploiement à partir de Docker Hub ou d'un dépôt distant Artifact Registry avec un registre externe.

Déployer un nouveau service

Vous pouvez spécifier une image de conteneur avec un tag (par exemple, us-docker.pkg.dev/my-project/container/my-image:latest) ou avec un condensé exact (par exemple, us-docker.pkg.dev/my-project/container/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é.

Console

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

  1. Dans la console Google Cloud , accédez à la page Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Déployer un conteneur pour afficher le formulaire Créer un service.

  3. Dans le formulaire, sélectionnez l'option de déploiement.

    1. Si vous souhaitez déployer manuellement un conteneur, sélectionnez Déployer une révision à partir d'une image de conteneur existante, puis spécifiez l'image de conteneur.

    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.

  4. Saisissez un nom de service. Les noms de service doivent comporter un maximum de 49 caractères et être uniques par région et par projet. Un nom de service ne peut pas être modifié ultérieurement et il est visible publiquement.

  5. Dans le champ Région, sélectionnez la région dans laquelle vous souhaitez créer votre service.

    Le sélecteur de région indique le niveau de tarification et la disponibilité des mappages de domaines, et met en évidence les régions avec l'impact carbone le plus faible.

  6. Sous Authentification, configurez les éléments suivants :

    • Si vous créez une API publique ou un site Web, sélectionnez Autoriser l'accès public. 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).
  7. Configurez la facturation si nécessaire.

  8. Sous Scaling du service, si vous utilisez l'autoscaling Cloud Run par défaut, vous pouvez spécifier les instances minimales. Si vous utilisez le scaling manuel, spécifiez le nombre d'instances pour le service.

  9. Définissez les paramètres de l'objet Ingress dans le formulaire, le cas échéant.

  10. Cliquez sur Conteneurs, mise en réseau, sécurité pour définir d'autres paramètres facultatifs dans les onglets appropriés :

  11. Une fois la configuration du service terminée, cliquez sur Créer pour déployer l'image sur Cloud Run, puis patientez jusqu'à la fin du déploiement.

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

gcloud

  1. Dans la console Google Cloud , activez Cloud Shell.

    Activer Cloud Shell

    En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. 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 les éléments suivants :

      • SERVICE : nom du service sur lequel vous souhaitez déployer. Les noms de service doivent comporter un maximum de 49 caractères et être uniques par région et par projet. 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é.
      • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. 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 publique ou un site Web public, autorisez l'accès public à 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 l'accès public. 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 achevée, un message de réussite indiquant l'URL du service déployé s'affiche.

    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 gcloud CLI.

  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 : nom de votre service Cloud Run. Les noms de service doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
    • IMAGE : 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

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
  provider "google" {
    project = "PROJECT-ID"
  }

  resource "google_cloud_run_v2_service" "default" {
    name     = "SERVICE"
    location = "REGION"
    client   = "terraform"

    template {
      containers {
        image = "IMAGE_URL"
      }
    }
  }

  resource "google_cloud_run_v2_service_iam_member" "noauth" {
    location = google_cloud_run_v2_service.default.location
    name     = google_cloud_run_v2_service.default.name
    role     = "roles/run.invoker"
    member   = "allUsers"
  }

Remplacez les éléments suivants :

  • PROJECT-ID : ID du projet Google Cloud
  • REGION : région Google Cloud
  • SERVICE : nom de votre service Cloud Run. Les noms de service doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Cette configuration autorise l'accès public (l'équivalent de --allow-unauthenticated). Pour rendre le service privé, supprimez le stanza google_cloud_run_v2_service_iam_member.

Nouveau message

Vous pouvez stocker votre spécification Compose dans un fichier YAML, puis la déployer en tant que service Cloud Run à l'aide d'une seule commande gcloud.

Pour déployer un fichier compose.yaml en tant que service Cloud Run, procédez comme suit :

  1. Dans le répertoire de votre projet, créez un fichier compose.yaml avec vos définitions de service.

    services:
      web:
        image: IMAGE
        ports:
          - "8080:8080"

    Remplacez IMAGE_URL par l'URL de votre image de conteneur.

    Vous pouvez également spécifier d'autres options de configuration, telles que des variables d'environnement, des secrets et des montages de volumes.

Déployer le service

  1. Pour déployer les services, exécutez la commande gcloud run compose up :

    gcloud run compose up compose.yaml
  2. Répondez y à toutes les invites pour installer les composants requis ou activer les API.

  3. Facultatif : Rendez votre service public si vous souhaitez autoriser un accès non authentifié à celui-ci.

Une fois le déploiement terminé, l'URL du service Cloud Run s'affiche. Copiez cette URL et collez-la dans votre navigateur pour afficher le conteneur en cours d'exécution. Vous pouvez désactiver l'authentification par défaut depuis la console Google Cloud .

MCP

Vous pouvez utiliser un agent d'IA pour déployer votre service à l'aide du serveur MCP Cloud Run officiel.

Pour obtenir les meilleurs résultats, demandez à votre agent de privilégier les outils MCP par rapport à gcloud CLI avant de commencer à utiliser ce serveur MCP.

  1. Pour configurer le serveur MCP distant Cloud Run, suivez les instructions du guide Utiliser le serveur MCP distant Cloud Run.

  2. Pour déployer le service à partir d'un exemple d'image de conteneur helloworld, donnez à votre agent l'instruction suivante : Deploy service "helloworld" to Cloud Run from the container image us-docker.pkg.dev/cloudrun/container/hello.

    L'agent utilise l'outil deploy_service_from_image pour déployer une image de conteneur en tant que service Cloud Run.

Utiliser le prompt /deploy

Vous pouvez utiliser l'invite /deploy pour déployer rapidement un service à l'aide du serveur MCP Cloud Run. Vous devrez peut-être parcourir le menu de votre chatbot pour trouver l'outil ou la requête dont vous avez besoin.

Pour déployer le répertoire de travail actuel sur Cloud Run, exécutez l'invite /deploy suivante :

/deploy SERVICE_NAME \
    --project PROJECT_ID \
    --region REGION \

Remplacez les éléments suivants :

  • SERVICE_NAME : nom du service Cloud Run.
  • PROJECT_ID : ID du projet Google Cloud
  • REGION : nom de la région

Bibliothèques clientes

Pour déployer un service à partir du code, procédez comme suit :

API REST

Pour déployer un service, envoyez une requête HTTP POST au point de terminaison service de l'API Cloud Run Admin.

Exemple, à l'aide de curl :

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE

Remplacez les éléments suivants :

  • ACCESS_TOKEN : jeton d'accès valide pour un compte disposant des autorisations IAM pour déployer les services. Par exemple, si vous êtes connecté à gcloud, vous pouvez récupérer un jeton d'accès à l'aide de gcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le