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 les charges de travail sans requête. Contrairement aux services Cloud Run, les pools de nœuds de calcul ne disposent pas des fonctionnalités suivantes :
- Point de terminaison/URL publics
- Exposer un port d'entrée
- Autoscaling basé sur les requêtes
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 :
-
Développeur Cloud Run (
roles/run.developer
) sur le pool de nœuds de calcul Cloud Run -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité que vos pools de workers utilisent pour interagir avec d'autres services Google Cloud -
Lecteur Artifact Registry (
roles/artifactregistry.reader
) sur le dépôt Artifact Registry de l'image de conteneur déployée
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
- Mettre à jour un pool de nœuds de calcul existant
- Déployer des images à partir d'autres projets Google Cloud
- Déployer plusieurs conteneurs (side-cars) sur un pool de nœuds de calcul
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 Google Cloud CLI ou de Terraform.
gcloud
-
In the Google Cloud console, 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.
Pour déployer une image de conteneur de pool de nœuds de calcul :
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 par une référence à l'image de conteneur qui contient 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.
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
etgcloud
, vous devez utiliser les commandes suivantes :gcloud beta run worker-pools deploy WORKER_POOL --region REGION
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 par une référence à l'image de conteneur qui contient le pool de nœuds de calcul, par exemple
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
.
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 Google Cloud CLI ou de Terraform :
gcloud
-
In the Google Cloud console, 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.
Pour déployer une image de conteneur, procédez comme suit :
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 par une référence à l'image de conteneur qui contient 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.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é.
Terraform
Assurez-vous d'avoir configuré Terraform comme décrit dans l'exemple Déployer un nouveau pool de nœuds de calcul.
Apportez une modification au fichier de configuration.
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 accorder les rôles requis à l'agent de service Cloud Run, suivez les instructions ci-dessous :
Dans la console Google Cloud , ouvrez le projet de votre pool de nœuds de calcul Cloud Run.
Sélectionnez Inclure les attributions de rôles fournies par Google.
Copiez l'adresse e-mail de l'agent de service Cloud Run. Elle porte le suffixe @serverless-robot-prod.iam.gserviceaccount.com.
Ouvrez le projet qui contient le registre de conteneurs que vous souhaitez utiliser.
Cliquez sur Ajouter pour ajouter une entité principale.
Dans le champ Nouveaux comptes principaux, collez l'adresse e-mail du compte de service que vous avez copié précédemment.
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.
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
-
In the Google Cloud console, 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.
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 par une référence à l'image de conteneur qui contient 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 par une 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
Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, Cloud Run affiche un message de réussite.
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 par une référence à l'image de conteneur qui contient 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 ceux 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 :
- Afficher les journaux des pools de nœuds de calcul
- Surveiller les performances des pools de nœuds de calcul
- Définir les limites de mémoire
- Définir des variables d'environnement
- Gérer le pool de nœuds de calcul
- Gérer les révisions du pool de nœuds de calcul