Ce document explique comment déployer vos applications, y compris les services et les 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 Cloud Deploy sont compatibles lorsque vous effectuez un déploiement sur des cibles Cloud Run pour les services Cloud Run, mais les déploiements Canary ne sont pas compatibles avec les jobs Cloud Run.
Ce document décrit les trois principales configurations à 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âches Cloud Run
Limites
Vous ne pouvez déployer qu'un seul service ou tâche Cloud Run par cible.
Vous ne pouvez pas exécuter un déploiement Canary sur une tâche Cloud Run.
Les services Cloud Run, en revanche, peuvent utiliser un déploiement Canary.
Avant de commencer
Assurez-vous d'utiliser la gcloud CLI version
401.0.0
ou ultérieure.
Créer la configuration de votre cible
La cible peut être configurée dans le fichier YAML de votre pipeline de livraison ou dans un fichier distinct. Vous pouvez également configurer plusieurs cibles dans le même fichier.
Dans la définition de la cible, créez une stanza run
pour identifier l'emplacement où le service Cloud Run sera créé.
La syntaxe permettant de spécifier le service ou la tâche Cloud Run dans votre définition de 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 votre service ou votre job Cloud Run sera créé.Vous le ferez pour chaque cible. Nous recommandons un projet différent pour chaque service ou tâche 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 le job 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 cible, définissant le service ou la tâche 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 tous les cas, vous devez enregistrer la cible avant de créer la version pour déployer votre service ou votre tâche Cloud Run.
Créer votre configuration Skaffold
Voici un exemple de fichier skaffold.yaml
pour un déploiement Cloud Run:
apiVersion: skaffold/v3alpha1
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
Dans ce fichier skaffold.yaml
...
manifests.rawYaml
fournit les noms des définitions de service Cloud Run.Dans cet exemple,
service.yaml
est le fichier qui définit un service Cloud Run déployé par Skaffold. Ce nom de fichier peut être n'importe quel nom, mais par convention, il estservice.yaml
pour un service etjob.yaml
pour une tâche.Le stanza
deploy
spécifie la manière dont 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 le champ
{}
vide. Cloud Deploy la renseigne lors du rendu, en fonction du projet et de l'emplacement de la définition cible.Toutefois, pour le développement local, vous pouvez indiquer des valeurs ici. Toutefois, Cloud Deploy utilise toujours le projet et l'emplacement de la définition 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. Les deux sont décrits dans cette section.
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 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, puis copier votre service.yaml
à partir de là.
Pour obtenir la valeur service.yaml
à l'aide de Google Cloud CLI, procédez comme suit:
gcloud run services describe [service_name] --format=export
Pour obtenir service.yaml
à partir de la console Google Cloud:
Dans la console Google Cloud, accédez à la page "Services Cloud Run".
Sélectionnez le service 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 Edit (Modifier), puis copiez le contenu du fichier YAML dans un nouveau fichier nommé
service.yaml
dans 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 tâche Cloud Run, vous pouvez en créer une manuellement ou en copier une à partir d'un job existant. Les deux sont décrits dans cette section.
Notez que les tâches ne sont pas nécessairement exécutées lors de leur déploiement par Cloud Deploy. Ceci est différent des services, qui 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 elle-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 définition 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 attribué à 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'un job existant à l'aide de la console Google Cloud
Vous pouvez créer une tâche à l'aide de la console Google Cloud ou en utiliser une existante, puis copier votre job.yaml
à partir de là.
Pour obtenir la valeur job.yaml
à l'aide de Google Cloud CLI, procédez comme suit:
gcloud run jobs describe [job_name] --format=export
Pour obtenir job.yaml
à partir de la console Google Cloud:
Dans la console Google Cloud, accédez à la page "Tâches" de 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 la tâche, la page "Informations sur la tâche" s'affiche:
Sélectionnez l'onglet YAML.
Cliquez sur Edit (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 disposez de votre définition de service ou de tâche Cloud Run, de votre configuration skaffold.yaml
et de 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 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 service.yaml
nouvellement déployé. Rien dans la révision précédente n'est conservé, sauf si ce sont les mêmes dans le fichier YAML nouvellement déployé. Par exemple, s'il existe des paramètres ou des libellés de configuration dans la révision précédente qui ne figurent pas dans le nouveau fichier YAML, ces paramètres ou libellés sont absents de la nouvelle révision.
Déployer des services et des jobs Cloud Run dans plusieurs projets
Si vous devez déployer des services ou des tâches dans différents projets, votre compte de service d'exécution doit être autorisé à accéder aux projets dans lesquels ces services ou ces tâches sont définis.
Pour en savoir plus, consultez les pages Compte de service d'exécution Cloud Deploy et Rôles et autorisations Identity and Access Management.
Étapes suivantes
Consultez le guide de démarrage rapide: déployer une application dans Cloud Run.
Découvrez comment configurer des cibles Cloud Deploy.
Découvrez les environnements d'exécution Cloud Deploy.
Apprenez-en plus sur la compatibilité de Skaffold avec Cloud Run.
Apprenez-en plus sur Cloud Run.