Ce document explique comment déployer vos applications, y compris Services Cloud Run et jobs 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 ou tâche. Toutes les fonctionnalités de Cloud Deploy sont compatibles lorsque vous déployez sur des cibles Cloud Run pour des services 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 ou définitions de tâche Cloud Run
Limites
Vous ne pouvez déployer qu'un seul service ou job Cloud Run par cible.
Vous ne pouvez pas exécuter de déploiement canari sur un job Cloud Run.
Toutefois, les services Cloud Run peuvent utiliser un déploiement canari.
Avant de commencer
Assurez-vous d'utiliser la version
401.0.0
ou ultérieure de la gcloud CLI.
Créer votre configuration cible
La cible peut être configurée dans le fichier YAML de votre pipeline de diffusion ou dans un fichier distinct. En outre, vous pouvez configurer plusieurs cibles dans le même fichier.
Dans la définition de la cible, créez un bloc run
pour identifier l'emplacement
le service Cloud Run est créé.
La syntaxe permettant de spécifier le service ou le job Cloud Run dans votre la définition de la cible est la suivante:
run:
location: projects/[project_name]/locations/[region_name]
Cet identifiant de ressource utilise les éléments suivants:
[
project_name
] correspond au nom du projet Google Cloud dans lequel votre service ou votre job Cloud Run sera créé.Vous le ferez pour chaque cible. Nous vous recommandons de créer un projet distinct pour chaque service ou job Cloud Run. Si vous souhaitez utiliser plusieurs services ou tâches dans le même projet, vous devez utiliser des profils skaffold dans votre fichier de configuration
skaffold.yaml
.[
region_name
] est la région dans laquelle le service ou la tâche sera créé. Votre service ou tâche peut se trouver dans n'importe quelle région compatible avec Cloud Run.
Voici un exemple de configuration de cible définissant le Service ou job 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 un pipeline de livraison Cloud Deploy ou séparément. Dans tous les cas, vous devez enregistrer la cible avant de créer la version pour déployer votre service Cloud Run ou d'un emploi.
Créer votre configuration Skaffold
Vous trouverez ci-dessous un exemple de fichier skaffold.yaml
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.rawYaml
fournit les noms des instances Cloud Run les définitions de service.Dans cet exemple,
service.yaml
est le fichier qui définit un service Cloud Run que Skaffold déploiera. Ce nom de fichier peut être n'importe quelle valeur, mais par convention, il s'agit deservice.yaml
pour un service.job.yaml
pour une tâche.La strophe
deploy
spécifie comment vous souhaitez que le fichier manifeste soit déployé, en particulier le projet et l'emplacement. Veuillez renseigner le champ "deploy
".Nous vous recommandons de laisser
{}
vide. Cloud Deploy insère pendant le rendu, en fonction du projet et de l'emplacement définition.Toutefois, pour le développement local, vous pouvez indiquer des valeurs ici. Toutefois, Cloud Deploy utilise toujours le projet et l'emplacement de la cible que des valeurs soient fournies ici 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. Tous deux sont décrits dans cette .
Option 1 : Créer un 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 le nom attribué à 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 service.yaml
à partir d'un service existant à l'aide de la console Google Cloud
Vous pouvez créer un service à l'aide de la console Google Cloud ou en utiliser un existant, puis copier votre service.yaml
à partir de là.
Pour obtenir service.yaml
à l'aide de Google Cloud CLI, procédez comme suit:
gcloud run services describe [service_name] --format=export
Pour obtenir le service.yaml
à partir de la console Google Cloud, procédez comme suit:
Dans la console Google Cloud, accédez à la page "Services 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 "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 appelé
service.yaml
dans votre système de fichiers, de sorte que Skaffold puisse l'utiliser lorsque vous créer une version.
Créer vos définitions de job Cloud Run
Pour déployer une définition de tâche Cloud Run, vous pouvez en créer une manuellement ou en copier une à partir d'une tâche existante. Tous deux sont décrits dans cette .
Notez que les tâches ne sont pas nécessairement exécutées lorsqu'elles sont déployées par Cloud Deploy. Cela diffère des services, qui s'exécutent des applications après leur déploiement. La manière dont une tâche est appelée dépend de la tâche lui-même.
Option 1 : Créer un job.yaml
Cloud Run
Le fichier job.yaml définit votre tâche Cloud Run. Lorsque vous créez une version, Skaffold utilise cette pour déployer la tâche.
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 le nom de 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'une tâche existante à l'aide de la console Google Cloud
Vous pouvez créer un job dans la console Google Cloud ou en utiliser un existant,
et copiez votre job.yaml
.
Pour obtenir job.yaml
à l'aide de Google Cloud CLI, procédez comme suit:
gcloud run jobs describe [job_name] --format=export
Pour obtenir l'job.yaml
à partir de la console Google Cloud :
Dans la console Google Cloud, accédez aux jobs Cloud Run. .
Sélectionnez la tâche existante dont vous souhaitez utiliser la définition.
Vous pouvez également en créer un, puis le sélectionner. Lorsque vous sélectionnez la tâche, la page "Détails de la tâche" s'affiche :
Sélectionnez l'onglet YAML.
Cliquez sur Modifier, puis copiez le contenu du fichier YAML dans un nouveau fichier nommé
job.yaml
, dans votre système de fichiers, afin que Skaffold puisse l'utiliser lorsque vous créez une version.
Synthèse
Maintenant que vous avez la définition de votre service ou de votre job Cloud Run, votre configuration skaffold.yaml
et votre définition de cible Cloud Deploy, et que vous avez enregistré votre cible en tant que ressource Cloud Deploy, vous pouvez appeler votre pipeline de diffusion pour créer une version et la faire progresser au fil des cibles définies dans le pipeline.
Guide de démarrage rapide Déployer une application sur Cloud Run à l'aide de Cloud Deploy montre 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 nouveau
déployé service.yaml
. Rien de la révision précédente n'est conservé, sauf s'il est identique dans le fichier YAML nouvellement déployé. Par exemple, si des paramètres de configuration ou des libellés de la version précédente ne figurent pas dans le nouveau fichier YAML, ils ne sont pas présents dans la nouvelle version.
Déclencher des tâches Cloud Run
Une fois que vous avez déployé une tâche, vous pouvez la déclencher comme décrit dans la documentation Cloud Run.
Déployer des services et des tâches Cloud Run dans plusieurs projets
Si vous devez déployer des services ou des jobs dans des projets différents, vos compte de service d'exécution a besoin l'autorisation d'accéder aux projets dans lesquels ces services ou jobs 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.
Étape suivante
Suivez le guide de démarrage rapide : déployer une application sur Cloud Run.
Découvrez comment configurer des cibles Cloud Deploy.
Découvrez les environnements d'exécution Cloud Deploy.
En savoir plus sur la compatibilité de Skaffold avec Cloud Run
En savoir plus sur Cloud Run