Ce document explique comment exécuter des programmes ou des opérations arbitraires avant ou après le déploiement.
Vous pouvez configurer Cloud Deploy pour qu'il effectue des actions pré-déploiement, post-déploiement, ou les deux. Ces programmes, exécutés de cette manière, sont appelés "hooks". Les hooks de prédéploiement et de postdéploiement s'exécutent en tant que jobs de prédéploiement et de postdéploiement sur le déploiement.
Vous pouvez configurer chaque crochet pour qu'il s'exécute dans un environnement d'exécution Cloud Deploy spécifique. Toutefois, si vous effectuez un déploiement sur Google Kubernetes Engine, vous pouvez éventuellement le configurer pour qu'il s'exécute sur le cluster GKE sur lequel vous déployez votre application.
Les hooks de déploiement sont supposés être idempotents. Si une action donnée est exécutée plusieurs fois, il n'y a aucun effet supplémentaire.
Comment fonctionnent les hooks de déploiement ?
Voici comment les hooks de déploiement s'exécutent dans Cloud Deploy et comment les configurer :
Vous configurez des hooks dans une ou plusieurs étapes de la progression de votre pipeline de déploiement.
Avant l'exécution du job de déploiement du déploiement progressif, Cloud Deploy exécute toutes les tâches configurées dans une définition
predeployde la progression du pipeline.Le crochet
predeploys'exécute toujours en tant que premier job de la phase.Une fois le job de déploiement du déploiement progressif exécuté, Cloud Deploy exécute toutes les tâches configurées dans une définition
postdeployde la progression du pipeline.
Les hooks de déploiement sont exécutés dans l'environnement d'exécution Cloud Deploy.
Utiliser des hooks de déploiement avec un déploiement Canary
Lorsque vous configurez des hooks de déploiement pour un déploiement Canary, vous devez tenir compte de plusieurs éléments :
Dans l'étape du pipeline de déploiement, la configuration du crochet (
predeployetpostdeploy) se trouve sousstrategy.canary.canaryDeploymentoustrategy.canary.customCanaryDeployment.phaseConfigs, et non sousstrategy.standard.Pour un canary automatisé, les hooks
predeployne sont exécutés qu'avant le déploiement dans la première phase, et les hookspostdeployne sont exécutés qu'après le déploiement dans la dernière phase (stable).
Configurer votre pipeline pour exécuter des hooks
Vous configurez des hooks pré- et post-déploiement dans une ou plusieurs étapes spécifiques de la progression du pipeline.
Voici comment configurer des hooks de pré-déploiement et de post-déploiement dans une étape de pipeline lorsque vous utilisez une stratégie de déploiement standard :
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
tasks: [TASKS]
postdeploy:
tasks: [TASKS]
Dans ce fichier YAML :
TASKS
Liste d'une ou de plusieurs tâches que vous souhaitez exécuter dans le cadre de vos hooks de pré-déploiement ou de post-déploiement. Lorsque vous spécifiez plusieurs tâches, elles s'exécutent de manière séquentielle, dans l'ordre dans lequel elles sont spécifiées. La tâche (avant ou après le déploiement) échoue lors de la première tâche qui échoue, et les tâches restantes ne sont pas exécutées.
Exécuter les hooks sur le cluster d'application
Par défaut, les hooks de déploiement s'exécutent dans l'environnement d'exécution Cloud Deploy. Vous pouvez également configurer Skaffold pour qu'il exécute des hooks de déploiement sur le même cluster que celui sur lequel votre application est exécutée.
Pour exécuter des hooks sur le cluster d'applications, vous devez les configurer en tant que customActions dans votre skaffold.yaml et les référencer à l'aide de actions dans la strophe predeploy ou postdeploy de la configuration de l'étape de votre pipeline de déploiement :
serialPipeline:
stages:
- targetId: hooks-staging
profiles: []
strategy:
standard:
predeploy:
actions: ["my-predeploy-action"]
postdeploy:
actions: ["my-postdeploy-action"]
Cette fonctionnalité n'est disponible que pour les déploiements sur GKE, et non pour Cloud Run. Les déploiements sur Cloud Run ne peuvent exécuter des hooks que dans l'environnement d'exécution Cloud Deploy.
Pour configurer votre hook afin qu'il s'exécute sur le cluster, incluez une strophe executionMode.kubernetesCluster dans votre fichier de configuration skaffold.yaml, à l'intérieur de la strophe customActions pour chaque action que vous souhaitez exécuter sur le cluster :
customActions:
- name: ACTION_NAME
containers:
- name: CONTAINER_NAME
image: IMAGE
command: [COMMANDS_TO_RUN]
args: [LIST_OF_ARGS]
executionMode:
kubernetesCluster: {}
Voici un exemple de strophe customActions qui inclut executionMode pour appeler le conteneur de hook sur le cluster d'application :
customActions:
- name: predeploy-action
containers:
- name: predeploy-echo
image: ubuntu
command: ["/bin/sh"]
args: ["-c", 'echo "this is a predeploy action"' ]
executionMode:
kubernetesCluster: {}
La strophe executionMode est facultative. Si vous l'omettez, Skaffold exécute le conteneur d'action personnalisée dans l'environnement d'exécution Cloud Deploy.
Variables d'environnement disponibles
Cloud Deploy fournit et renseigne également les variables d'environnement suivantes dans l'environnement d'exécution. Vous pouvez utiliser ces variables d'environnement dans votre hook de déploiement, votre tâche de validation ou votre cible personnalisée pour le rendu ou le déploiement.
ANTHOS_MEMBERSHIPPour les cibles de type
ANTHOS, nom complet de la ressource de l'abonnement Anthos.CLOUD_RUN_LOCATIONPour les cibles de type
RUN, la région dans laquelle le service Cloud Run est déployé.CLOUD_RUN_PROJECTPour les cibles de type
RUN, il s'agit du projet dans lequel le service Cloud Run a été créé.CLOUD_RUN_SERVICEPour les cibles de type
RUN, nom du service Cloud Run déployé.CLOUD_RUN_SERVICE_URLSPour les cibles de type
RUN, il s'agit de l'URL ou des URL (liste séparée par des virgules) que les utilisateurs finaux utiliseront pour accéder à votre service. Vous les trouverez dans les détails du service Cloud Run pour votre service, dans la consoleGoogle Cloud . Les URL sont générées par Cloud Run une fois que votre ou vos services Cloud Run ont été déployés. Par conséquent, cette variable d'environnement n'est disponible que dans les hooks post-déploiement et les jobs de validation.CLOUD_RUN_REVISIONPour les cibles de type
RUN, il s'agit de la révision spécifique du service Cloud Run.GKE_CLUSTERPour les cibles de type
GKE, le nom de ressource complet du cluster Google Kubernetes Engine, par exempleprojects/p/locations/us-central1/clusters/dev.TARGET_TYPEType d'exécution spécifique de la cible.
GKE,ANTHOSouRUN. Pour les cibles personnalisées, cette valeur ne sera pas définie.CLOUD_DEPLOY_LOCATIONRégion contenant les ressources Cloud Deploy.
CLOUD_DEPLOY_DELIVERY_PIPELINEID du pipeline de livraison.
CLOUD_DEPLOY_TARGETID de la cible.
CLOUD_DEPLOY_PROJECTNuméro de projet Google Cloud pour le projet contenant les ressources Cloud Deploy.
CLOUD_DEPLOY_PROJECT_IDID du projet Google Cloud .
CLOUD_DEPLOY_RELEASEID de la version dans laquelle les hooks s'exécuteront.
CLOUD_DEPLOY_ROLLOUTID du déploiement contenant les jobs pour les hooks.
CLOUD_DEPLOY_JOB_RUNID de l'exécution du job qui représente l'exécution actuelle du job.
CLOUD_DEPLOY_PHASELa phase du déploiement qui contient le job pour le crochet de déploiement, le job de validation ou le rendu ou déploiement personnalisé.
Déployer des paramètres en tant que variables d'environnement
En plus des variables d'environnement listées dans cette section, Cloud Deploy peut transmettre à vos conteneurs personnalisés tous les paramètres de déploiement que vous avez définis.
Étapes suivantes
- En savoir plus sur les tâches
- Essayez le guide de démarrage rapide : exécuter des hooks avant et après le déploiement.