Ce document explique comment déployer vos applications, y compris les services, les jobs et les pools de nœuds de calcul Cloud Run.
Cloud Deploy vous permet de déployer vos charges de travail basées sur des conteneurs sur n'importe quel service Cloud Run, job, ou pool de nœuds de calcul. Toutes les fonctionnalités de Cloud Deploy sont compatibles lorsque vous effectuez un déploiement sur des cibles Cloud Run pour des services ou des pools de nœuds de calcul Cloud Run, mais les déploiements Canary ne sont pas compatibles avec les jobs Cloud Run.
Ce document décrit les trois configurations principales que vous devez effectuer pour déployer sur Cloud Run :
- Créer votre configuration cible
- Créer votre configuration Skaffold
- Créer vos définitions de service, vos définitions de job ou vos définitions de pool de nœuds de calcul Cloud Run
Limites
Vous ne pouvez déployer qu'un seul service, job ou pool de nœuds de calcul Cloud Run par cible.
Vous ne pouvez pas exécuter de déploiement Canary sur un job Cloud Run.
Toutefois, les services et les pools de nœuds de calcul Cloud Run peuvent utiliser un déploiement Canary.
Pour déployer une fonction Cloud Run à l'aide de Cloud Deploy, vous devez modifier votre workflow CI afin de compiler la fonction dans un conteneur et de la déployer en tant que service Cloud Run.
Avant de commencer
Assurez-vous d'utiliser gcloud CLI version
541.0.0ou une version ultérieure.
Créer votre configuration cible
La cible peut être configurée dans votre fichier YAML de pipeline de livraison ou dans un fichier distinct. Vous pouvez également configurer plusieurs cibles dans le même fichier.
Les cibles doivent être définies dans le même projet et la même région que le pipeline de livraison. Toutefois, les services, les jobs ou les pools de nœuds de calcul sur lesquels les cibles sont déployées peuvent se trouver dans des projets et des régions différents, à condition que le compte de service ait accès à ces projets.
Dans la définition de la cible, créez une strophe run pour identifier l'emplacement où le service Cloud Run sera créé.
La syntaxe permettant de spécifier le service, le job ou le pool de nœuds de calcul Cloud Run dans la définition de votre cible est la suivante :
run:
location: projects/[project_name]/locations/[region_name]
Cet identifiant de ressource utilise les éléments suivants :
project_namecorrespond au nom du Google Cloud projet dans lequel votre service, job ou pool de nœuds de calcul Cloud Run sera créé.Vous devez effectuer cette opération pour chaque cible. Nous vous recommandons d'utiliser un projet différent pour chaque service, job ou pool de nœuds de calcul Cloud Run. Si vous souhaitez utiliser plusieurs services, jobs ou pools de nœuds de calcul dans le même projet, vous devez utiliser des profils Skaffold dans votre
skaffold.yamlfichier de configuration.region_namecorrespond à la région dans laquelle le service, le job ou le pool de nœuds de calcul sera créé. Votre service, job ou pool de nœuds de calcul peut se trouver dans n'importe quelle région compatible avec Cloud Run.
Voici un exemple de configuration cible qui définit le service, le job ou le pool de nœuds de calcul Cloud Run à créer :
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
Vous pouvez définir cette cible dans une définition de pipeline de livraison Cloud Deploy ou séparément. Dans les deux cas, vous devez enregistrer la cible avant de créer la version à déployer sur votre service, job ou pool de nœuds de calcul Cloud Run.
Créer votre configuration Skaffold
Voici un exemple skaffold.yaml de fichier pour un
déploiement Cloud Run :
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
Dans ce fichier skaffold.yaml...
manifests.rawYamlfournit les noms des définitions de service Cloud Run.Dans cet exemple,
service.yamlest le fichier qui définit un service Cloud Run que Skaffold déploiera. Ce nom de fichier peut être n'importe quoi, mais par convention, il s'agit deservice.yamlpour un service,job.yamlpour un job etworkerpool.yamlpour un pool de nœuds de calcul.La strophe
deployspécifie comment vous souhaitez que le fichier manifeste soit déployé, en particulier le projet et l'emplacement.deployest obligatoire.Nous vous recommandons de laisser les accolades
{}vides. Cloud Deploy les remplit lors du rendu, en fonction du projet et de l'emplacement de la définition de la cible.Toutefois, pour le développement local, vous pouvez fournir des valeurs ici. Cependant, Cloud Deploy utilise toujours le projet et l'emplacement de la définition de la cible, que des valeurs soient fournies ou non.
Créer vos définitions de service Cloud Run
Pour créer une définition de service Cloud Run, vous pouvez en créer une manuellement ou en copier une à partir d'un service existant. Les deux méthodes sont décrites dans cette section.
Option 1 : Créer un fichier service.yaml Cloud Run
Le fichier service.yaml définit votre service Cloud Run. Lorsque vous créez une version, Skaffold utilise cette définition pour déployer votre service.
Voici un exemple simplifié :
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Où :
[SERVICE_NAME]est un nom pour ce service Cloud Run.[IMAGE_PATH]pointe vers l'image ou les images de conteneur que vous déployez avec ce service.
Option 2 : Copier un fichier service.yaml à partir d'un service existant à l'aide de la Google Cloud console
Vous pouvez créer un service à l'aide de la Google Cloud console ou en utiliser un existant,
puis y copier votre service.yaml à partir de là.
Pour obtenir le fichier service.yaml à l'aide de Google Cloud CLI :
gcloud run services describe [service_name] --format=export
Pour obtenir le service.yaml à partir de la Google Cloud console :
Dans la Google Cloud console, accédez à la page Services de Cloud Run.
Sélectionnez le service existant dont vous souhaitez utiliser la définition.
Vous pouvez également en créer un, puis le sélectionner. Lorsque vous sélectionnez le service, la page d'informations sur le service s'affiche :

Sélectionnez l'onglet YAML.
Cliquez sur Modifier, puis copiez le contenu du fichier YAML dans un nouveau fichier nommé
service.yamlde votre système de fichiers, afin que Skaffold puisse l'utiliser lorsque vous créez une version.
Créer vos définitions de job Cloud Run
Pour déployer une définition de job Cloud Run, vous pouvez en créer une manuellement ou en copier une à partir d'un job existant. Les deux méthodes sont décrites dans cette section.
Notez que les jobs ne sont pas nécessairement exécutés lorsqu'ils sont déployés par Cloud Deploy. Cela diffère des services, qui sont des applications en cours d'exécution après leur déploiement. La façon dont un job est appelé dépend du job lui-même.
Option 1 : Créer un fichier job.yaml Cloud Run
Le fichier job.yaml définit votre job Cloud Run. Lorsque vous créez une version, Skaffold utilise cette définition pour déployer le job.
Voici un exemple simplifié :
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Où :
[JOB_NAME]est un nom pour ce job Cloud Run.[IMAGE_PATH]pointe vers l'image de conteneur que vous déployez pour ce job.
Option 2 : Copier un job.yaml à partir d'un job existant à l'aide de la Google Cloud console
Vous pouvez créer un job à l'aide de la Google Cloud console ou en utiliser un existant,
puis y copier votre job.yaml à partir de là.
Pour obtenir le fichier job.yaml à l'aide de Google Cloud CLI :
gcloud run jobs describe [job_name] --format=export
Pour obtenir le job.yaml à partir de la Google Cloud console :
Dans la Google Cloud console, accédez à la page Jobs Cloud Run.
Sélectionnez le job existant dont vous souhaitez utiliser la définition.
Vous pouvez également en créer un, puis le sélectionner. Lorsque vous sélectionnez le job, la page "Détails du job" s'affiche :

Sélectionnez l'onglet YAML.
Cliquez sur Modifier, puis copiez le contenu du fichier YAML dans un nouveau fichier nommé
job.yaml, de votre système de fichiers, afin que Skaffold puisse l'utiliser lorsque vous créez une version.
Créer vos définitions de pool de nœuds de calcul Cloud Run
Pour déployer une définition de pool de nœuds de calcul Cloud Run, vous pouvez en créer une manuellement ou en copier une à partir d'un pool de nœuds de calcul existant. Les deux méthodes sont décrites dans cette section.
Option 1 : Créer un fichier workerpool.yaml Cloud Run
Le fichier workerpool.yaml définit votre pool de nœuds de calcul Cloud Run. Lorsque vous créez une version, Skaffold utilise cette définition pour déployer le pool de nœuds de calcul.
Voici un exemple simplifié :
apiVersion: run.googleapis.com/v1
kind: WorkerPool
metadata:
name: [WORKERPOOL_NAME]
annotations:
run.googleapis.com/launch-stage: BETA
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Où :
[WORKERPOOL_NAME]est un nom pour ce pool de nœuds de calcul Cloud Run.[IMAGE_PATH]pointe vers l'image de conteneur que vous déployez pour ce pool de nœuds de calcul.
Option 2 : Copier un workerpool.yaml à partir d'un pool de nœuds de calcul existant à l'aide de la Google Cloud console
Vous pouvez créer un pool de nœuds de calcul à l'aide de la console ou en utiliser un existant,
puis y copier votre workerpool.yaml à partir de là. Google Cloud
Pour obtenir le fichier workerpool.yaml à l'aide de Google Cloud CLI :
gcloud beta run worker-pools describe [workerpool_name] --format=export
Pour obtenir le workerpool.yaml à partir de la Google Cloud console :
Dans la Google Cloud console, accédez à la page Pools de nœuds de calcul Cloud Run.
Sélectionnez le pool de nœuds de calcul existant dont vous souhaitez utiliser la définition.
Vous pouvez également en créer un, puis le sélectionner. Lorsque vous sélectionnez le pool de nœuds de calcul, la page d'informations du pool de nœuds de calcul s'affiche :

Sélectionnez l'onglet YAML.
Copiez le contenu du fichier YAML dans un nouveau fichier nommé
workerpool.yaml, de votre système de fichiers, afin que Skaffold puisse l'utiliser lorsque vous créez une version.
Synthèse
Maintenant que vous disposez de votre définition de service, de job ou de pool de nœuds de calcul Cloud Run, de votre
skaffold.yaml configuration et de votre définition de cible Cloud Deploy
, et que vous avez
enregistré votre cible
en tant que ressource Cloud Deploy, vous pouvez maintenant
appeler votre pipeline de livraison
pour créer une version et la faire progresser dans la progression des cibles définies
dans le pipeline.
Le guide de démarrage rapide Déployer une application sur Cloud Run à l'aide de Cloud Deploy illustre tout cela en action.
Comportement des services entre les révisions
Lorsque vous redéployez un service, la nouvelle révision est basée sur le fichier service.yaml nouvellement déployé. Aucune information sur la révision précédente n'est conservée, sauf si elle est identique dans le fichier YAML nouvellement déployé. Par exemple, si des paramètres de configuration ou des libellés de la révision précédente ne figurent pas dans le nouveau fichier YAML, ils seront absents de la nouvelle révision.
Déclencher des jobs Cloud Run
Une fois que vous avez déployé un job, vous pouvez le déclencher comme décrit dans la documentation Cloud Run.
Déployer des services, des jobs et des pools de nœuds de calcul Cloud Run dans plusieurs projets
Si vous devez déployer des services, des jobs ou des pools de nœuds de calcul qui se trouvent dans des projets différents, votre compte de service d'exécution doit être autorisé à accéder aux projets dans lesquels ces services, jobs ou pools de nœuds de calcul sont définis.
Pour en savoir plus, consultez Compte de service d'exécution Cloud Deploy et Rôles et autorisations Identity and Access Management.
Déployer des fonctions Cloud Run
Cloud Run Functions compile votre code source chaque fois qu'une fonction est déployée. Pour cette raison, chaque environnement d'exécution cible de votre pipeline peut obtenir un artefact légèrement différent. Cela va à l'encontre des bonnes pratiques de Cloud Deploy. Nous vous suggérons plutôt d'utiliser directement un service Cloud Run. Cela vous permet de créer un seul artefact et de le promouvoir dans vos environnements.
Archivez le fichier
service.yamlpour votre fonction Cloud Run.Pour ce faire, exécutez la commande suivante :
gcloud run services describe FUNCTION_NAME \ --format=export \ --region=REGION \ --project=PROJECTSupprimez les annotations suivantes, le cas échéant :
run.googleapis.com/build-base-imagerun.googleapis.com/build-namerun.googleapis.com/build-source-locationrun.googleapis.com/build-enable-automatic-updates
Remplacez la valeur dans
spec.spec.containers.imageparIMAGE_TAG.Créez votre pipeline de livraison et vos cibles, avec le service Cloud Run comme cible.
Séparez l'étape de compilation de l'étape de déploiement dans votre processus CI. Au lieu d'utiliser Google Cloud CLI pour déployer votre fonction, remplacez-la par les étapes suivantes :
Compilez la fonction dans un conteneur à l'aide de Cloud Build :
gcloud builds submit --pack image=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAME \ --project=PROJECT \ --region=REGIONCréez une version à l'aide de Cloud Deploy :
gcloud deploy releases create RELEASE_NAME \ --project=DEPLOY_PROJECT \ --region=REGION \ --delivery-pipeline=DELIVERY_PIPELINE \ --images=IMAGE_TAG=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAMEDans cette commande...
RELEASE_NAMEest un nom à attribuer à cette version. Le nom doit être unique parmi toutes les versions de ce pipeline de livraison.DEPLOY_PROJECTcorrespond à l'ID de projet du projet dans lequel vous avez créé le pipeline de déploiement.DELIVERY_PIPELINEcorrespond au nom du pipeline de livraison qui gérera le déploiement de cette version tout au long de la progression des cibles. Ce nom doit correspondre aunamechamp de la définition du pipeline.REGIONcorrespond au nom de la région dans laquelle vous créez la version, par exempleus-central1. Ce champ est obligatoire.IMAGE_NAMEcorrespond au nom que vous avez donné à l'image à l'étape précédente, lorsque vous avez compilé la fonction.
Étape suivante
Essayez le guide de démarrage rapide : Déployer une application sur Cloud Run.
Découvrez la compatibilité de Skaffold avec Cloud Run .
En savoir plus sur Cloud Run