Déployer un service ou un job Cloud Run

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 Service Cloud Run ou job. Toutes les fonctionnalités de Cloud Deploy sont lorsque vous déployez sur des cibles Cloud Run services Cloud Run, mais les déploiements Canary ne sont pas compatibles jobs Cloud Run.

Ce document décrit les trois configurations principales que vous devez effectuer dans pour déployer sur 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 Canary à un job Cloud Run.

    Les services Cloud Run, en revanche, peuvent utiliser un déploiement Canary.

Avant de commencer

Créer votre configuration cible

La cible peut être configurée dans le fichier YAML de votre pipeline de livraison ou se trouver 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] est le nom du projet Google Cloud dans lequel Le service ou le job Cloud Run est créé.

    Vous le ferez pour chaque cible. Nous recommandons un projet différent pour chaque service ou job Cloud Run. Si vous souhaitez disposer de plusieurs services ou un emploi dans le même projet, vous devez utiliser Profils Skaffold dans le fichier de configuration skaffold.yaml.

  • [region_name] est la région dans laquelle le service ou la tâche seront créés. Votre service ou votre travail peut se trouver dans n'importe quel région compatible avec Cloud Run.

Voici un exemple de configuration cible, qui définit 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

Voici un exemple de fichier skaffold.yaml pour une 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 et des définitions de service.

    Dans cet exemple, service.yaml est le fichier qui définit une Service Cloud Run que Skaffold va déployer. Ce nom de fichier peut être n'importe quelle valeur, mais par convention, il s'agit de service.yaml pour un service. job.yaml pour une tâche.

  • Le bloc deploy indique la manière dont vous souhaitez déployer le fichier manifeste. en particulier le projet et l'emplacement. Veuillez renseigner le champ "deploy".

    Nous vous recommandons de ne pas renseigner le champ {}. 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 créer manuellement, ou en copier une à partir d'un service existant. Tous deux sont décrits dans cette .

Option 1: Créer une instance Cloud Run service.yaml

Le fichier service.yaml définit votre service Cloud Run. Lorsque vous créer 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 la 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 utiliser un service existant, et copiez votre service.yaml.

Pour obtenir le fichier 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:

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

  2. Sélectionnez le service existant dont vous souhaitez utiliser la définition.

Vous pouvez également en créer un, puis le sélectionner. Quand ? vous sélectionnez le service, la page "Détails du service" s'affiche:

Page des détails du service dans la console Google Cloud, avec l'onglet "YAML"

  1. Sélectionnez l'onglet YAML.

  2. 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 job Cloud Run, vous pouvez créer manuellement, ou en copier une à partir d'un job existant. Tous deux sont décrits dans cette .

Notez que les jobs ne sont pas nécessairement exécutés après leur déploiement 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 une instance Cloud Run job.yaml

Le fichier job.yaml définit votre job 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 cette tâche.

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 le fichier job.yaml à l'aide de Google Cloud CLI, procédez comme suit:

gcloud run jobs describe [job_name] --format=export

Pour obtenir le job.yaml à partir de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez aux jobs Cloud Run. .

  2. Sélectionnez le job existant dont vous souhaitez utiliser la définition.

Vous pouvez également en créer un, puis le sélectionner. Quand ? vous sélectionnez la tâche, la page "Informations sur la tâche" s'affiche:

Page des détails du job dans la console Google Cloud, avec l'onglet "YAML"

  1. Sélectionnez l'onglet YAML.

  2. Cliquez sur Modifier, puis copiez le contenu du fichier YAML dans un nouveau fichier appelé job.yaml dans votre système de fichiers, de sorte que Skaffold puisse l'utiliser lorsque vous créer une version.

Synthèse

Maintenant que vous disposez de la définition du service ou du job Cloud Run, skaffold.yaml et votre cible Cloud Deploy et vous avez a 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 vers les 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 concernant la révision précédente n'est conservé, sauf dans le fichier YAML nouvellement déployé. Par exemple, si certains paramètres ou étiquettes de configuration de la révision précédente dans le nouveau YAML, ces paramètres ou étiquettes sont absents de la nouvelle révision.

Déclencher des jobs Cloud Run

Après avoir déployé un job, vous pouvez le déclencher comme décrit dans la documentation Cloud Run.

Déployer des services et des jobs 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.

Voir Compte de service d'exécution Cloud Deploy et Identity and Access Management pour en savoir plus.

Étape suivante