Déployer des pools de nœuds de calcul sur Cloud Run

Cette page explique comment déployer des images de conteneur dans un nouveau pool de nœuds de calcul Cloud Run ou dans une nouvelle révision d'un pool de nœuds de calcul Cloud Run existant.

Les pools de nœuds de calcul sont une ressource Cloud Run spécialement conçue pour effectuer des tâches en arrière-plan en continu. Contrairement aux services Cloud Run, les pools de nœuds de calcul ne disposent pas d'un point de terminaison/URL à équilibrage de charge et ne sont pas compatibles avec l'autoscaling.

Pour obtenir un exemple de déploiement d'un nouveau pool de nœuds de calcul, consultez le guide de démarrage rapide sur le déploiement d'un exemple de pool de nœuds de calcul.

Rôles requis

Pour obtenir les autorisations nécessaires pour déployer des pools de nœuds de calcul 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 pool de nœuds de calcul Cloud Run communique avec des APIGoogle Cloud , telles que des 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 Docker Hub. Nous vous recommandons d'utiliser Artifact Registry. 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, Nexus ou 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 à 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 des pools de nœuds de calcul

Vous pouvez déployer des pools de nœuds de calcul de différentes manières :

Déployer un pool de nœuds de calcul

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 premier déploiement d'un pool de nœuds de calcul a pour effet de créer 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é.

Suivez les instructions à l'aide de la console Google Cloud , de la Google Cloud CLI ou de Terraform.

Console

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

    Accédez à Cloud Run

  2. Sélectionnez Pools de workers dans le menu, puis cliquez sur Déployer un conteneur pour afficher le formulaire Créer un pool de workers.

    1. Dans le formulaire, spécifiez l'image du conteneur.

    2. Saisissez le nom du pool de nœuds de calcul. Les noms de pool de nœuds de calcul doivent comporter un maximum de 49 caractères et être uniques par région et par projet. Vous ne pouvez pas utiliser le même nom qu'un nom de service existant de votre projet. Un nom de pool de nœuds de calcul ne peut pas être modifié ultérieurement et il est visible publiquement.

    3. Sélectionnez la région dans laquelle vous souhaitez créer votre nœud de calcul. Le sélecteur de région indique le niveau de tarification et met en évidence les régions avec l'impact carbone le plus faible.

    4. Sous Scaling, spécifiez le nombre d'instances pour le pool de nœuds de calcul.

  3. Cliquez sur Conteneur(s), volumes, mise en réseau, sécurité pour définir d'autres paramètres facultatifs dans les onglets appropriés :

  4. Une fois la configuration du pool de nœuds de calcul terminée, cliquez sur Créer pour déployer l'image sur Cloud Run, puis patientez jusqu'à la fin du déploiement.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Pour déployer une image de conteneur de pool de nœuds de calcul :

    1. Exécutez la commande suivante :

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Remplacez les éléments suivants :

      • WORKER_POOL : nom du pool de nœuds de calcul sur lequel vous souhaitez déployer le service. Si le pool de nœuds de calcul 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 pool de nœuds de calcul vous sera demandé. Les noms de pool de nœuds de calcul doivent comporter au maximum 49 caractères, être uniques par région et par projet, et ne pas être identiques à un nom de service existant de votre projet.
      • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool: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.
    2. Patientez jusqu'à la fin du déploiement. Une fois l'opération réussie, Cloud Run affiche un message de réussite ainsi que des informations sur la révision du pool de nœuds de calcul déployé.

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

      gcloud beta run worker-pools deploy WORKER_POOL --region REGION
  3. Terraform

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

    resource "google_cloud_run_v2_worker_pool" "default" {
      name     = "WORKER_POOL"
      location = "REGION"
      launch_stage = "BETA"
    
      template {
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • WORKER_POOL : nom du pool de nœuds de calcul.
    • REGION : région Google Cloud , par exemple europe-west1.
    • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

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 Google Cloudproduits 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

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

Déployer une nouvelle révision d'un pool de nœuds de calcul existant

Notez que la modification des paramètres de configuration d'un pool de nœuds de calcul 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.

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.

Suivez ces instructions à l'aide de la console Google Cloud , de la Google Cloud CLI ou de Terraform :

Console

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

    Accédez à Cloud Run

  2. Sélectionnez Pools de nœuds de calcul dans le menu, puis le pool de nœuds de calcul à mettre à jour. Cliquez ensuite sur Modifier et déployer la nouvelle révision pour afficher le formulaire Déployer la révision du pool de nœuds de calcul.

    1. Si nécessaire, spécifiez l'URL de la nouvelle image de conteneur à déployer.

    2. Configurez le conteneur si nécessaire.

    3. Si nécessaire, mettez à jour le nombre d'instances pour le pool de nœuds de calcul.

  3. Si nécessaire, cliquez sur Conteneur(s), Volumes, Mise en réseau, Sécurité pour définir d'autres paramètres facultatifs dans les onglets appropriés :

  4. Lorsque vous avez terminé de mettre à jour votre pool de nœuds de calcul, cliquez sur Déployer.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    1. Exécutez la commande suivante :

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Remplacez les éléments suivants :

      • WORKER_POOL : nom du pool de nœuds de calcul sur lequel vous souhaitez déployer le service. Si le pool de nœuds de calcul 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 pool de nœuds de calcul vous sera demandé. Les noms de pool de nœuds de calcul doivent comporter au maximum 49 caractères, être uniques par région et par projet, et ne pas être identiques à un nom de service existant de votre projet.
      • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool: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.

      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 --revision-suffix de gcloud CLI.

    2. Patientez jusqu'à la fin du déploiement. Une fois l'opération réussie, Cloud Run affiche un message de réussite ainsi que des informations sur la révision du pool de nœuds de calcul déployé.

  3. Terraform

    Assurez-vous d'avoir configuré Terraform comme décrit dans l'exemple Déployer un nouveau pool de nœuds de calcul.

    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.

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

Pour déployer des images à partir d'autres projets Google Cloud , vous ou votre administrateur devez attribuer les rôles IAM requis au compte du déployeur et à l'agent de service Cloud Run.

Pour connaître les rôles requis pour le compte déployeur, consultez la section Rôles requis.

Pour attribuer les rôles requis à l'agent de service Cloud Run, suivez les instructions ci-dessous :

  1. Dans la console Google Cloud , ouvrez le projet pour votre pool de nœuds de calcul Cloud Run.

    Accéder à la page IAM

  2. Sélectionnez Inclure les attributions de rôles fournies par Google.

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

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

    Accéder à la page IAM

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

  6. Dans le champ Nouveaux comptes principaux, collez l'adresse e-mail du compte de service que vous avez copié précédemment.

  7. Dans le menu déroulant 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.

  8. Déployez l'image de conteneur sur le projet contenant votre pool de nœuds de calcul Cloud Run.

Déployer des images à partir d'autres registres

Pour déployer des images de conteneurs publiques ou privées qui ne sont pas stockées dans Artifact Registry ou Docker Hub, configurez un dépôt distant Artifact Registry.

Les dépôts distants Artifact Registry vous permettent d'effectuer les opérations suivantes :

  • Déployez une image de conteneur publique, par exemple GitHub Container Registry (ghcr.io).
  • Déployer des images de conteneurs à partir de dépôts privés nécessitant une authentification, par exemple JFrog Artifactory ou Nexus.

Si vous ne pouvez pas utiliser de dépôt distant Artifact Registry, vous pouvez extraire et transférer temporairement des images de conteneurs vers Artifact Registry en les déployant sur Cloud Run à l'aide de docker push. Cloud Run importe l'image de conteneur lors du déploiement. Vous pouvez ensuite supprimer l'image d'Artifact Registry.

Déployer plusieurs conteneurs (side-cars) sur un pool de nœuds de calcul

Un déploiement Cloud Run avec side-cars contient un conteneur de pool de nœuds de calcul principal et un ou plusieurs conteneurs side-car. Les side-cars peuvent communiquer entre eux et avec le conteneur du pool de nœuds de calcul à l'aide d'un port localhost. Le port localhost varie en fonction des conteneurs que vous utilisez.

Vous pouvez déployer jusqu'à 10 conteneurs par instance, y compris le conteneur du pool de nœuds de calcul. Tous les conteneurs d'une instance partagent le même espace de noms réseau et peuvent également partager des fichiers à l'aide d'un volume partagé en mémoire.

Vous pouvez exiger que tous les déploiements utilisent un sidecar spécifique en créant des règles d'administration personnalisées.

Déployer un service avec des conteneurs side-car

Suivez ces instructions pour déployer plusieurs conteneurs dans un pool de nœuds de calcul Cloud Run à l'aide de Google Cloud CLI ou de Terraform :

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Pour déployer plusieurs conteneurs sur un pool de nœuds de calcul, exécutez la commande suivante :

    gcloud beta run worker-pools deploy WORKER_POOL \
     --container WORKER_POOL_CONTAINER_NAME \
     --image='WORKER_POOL_IMAGE' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    Remplacez les éléments suivants :

    • WORKER_POOL : nom du pool de nœuds de calcul sur lequel vous déployez le service. Si vous omettez ce paramètre, le nom du pool de nœuds de calcul vous sera demandé.
    • WORKER_POOL_CONTAINER_NAME : nom du conteneur du pool de nœuds de calcul.
    • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • SIDECAR_CONTAINER_NAME : nom du conteneur side-car, par exemple sidecar.
    • SIDECAR_IMAGE : référence à l'image de conteneur side-car.

    Pour configurer chaque conteneur dans la commande de déploiement, indiquez la configuration de chaque conteneur après les paramètres container, par exemple :

    gcloud beta run worker-pools deploy WORKER_POOL \
      --container CONTAINER_1_NAME \
      --image='WORKER_POOL_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, Cloud Run affiche un message de réussite.

  4. Terraform

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

    resource "google_cloud_run_v2_worker_pool" "default" {
      name     = "WORKER_POOL"
      location = "REGION"
      launch_stage = "BETA"
    
      template {
        containers {
          name = "CONTAINER_NAME"
          image = "IMAGE_URL"
        }
        containers {
          name = "SIDECAR_CONTAINER_NAME"
          image = "SIDECAR_IMAGE_URL"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • WORKER_POOL : nom du pool de nœuds de calcul.
    • REGION : région Google Cloud , par exemple europe-west1.
    • CONTAINER_NAME : nom du conteneur.
    • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • SIDECAR_CONTAINER_NAME : nom du conteneur side-car.
    • SIDECAR_IMAGE_URL : référence à l'image de conteneur side-car.

Fonctionnalités notables disponibles pour les déploiements avec side-cars

Vous pouvez spécifier l'ordre de démarrage des conteneurs dans un déploiement comportant plusieurs conteneurs, si vous avez des dépendances nécessitant le démarrage de certains conteneurs avant d'autres conteneurs dans le déploiement.

Si vous avez des conteneurs qui dépendent d'autres conteneurs, vous devez utiliser des vérifications d'état dans votre déploiement. Lorsque vous utilisez des vérifications de l'état, Cloud Run suit l'ordre de démarrage des conteneurs et vérifie l'état de chaque conteneur avant de démarrer le conteneur suivant. Sans vérification d'état, Cloud Run tente de démarrer tous les conteneurs, même si les conteneurs dont ils dépendent ne sont pas encore en cours d'exécution ou n'ont pas pu démarrer.

Plusieurs conteneurs d'une même instance peuvent accéder à un volume en mémoire partagé, qui est accessible à chaque conteneur via des points d'installation que vous créez.

Étapes suivantes

Après avoir déployé un nouveau pool de nœuds de calcul, vous pouvez effectuer les opérations suivantes :