Ejecuta hooks antes y después de la implementación

En este documento, se describe cómo ejecutar programas u operaciones arbitrarios antes o después de la implementación.

Puedes configurar Cloud Deploy para realizar acciones previas a la implementación o posteriores a ella, o ambas. Estos programas, que se ejecutan de esta manera, se denominan "hooks". Los hooks previos y posteriores a la implementación se ejecutan como trabajos previos y posteriores a la implementación en el lanzamiento.

Puedes configurar cada hook para que se ejecute en un entorno de ejecución de Cloud Deploy especificado, pero, si realizas la implementación en Google Kubernetes Engine, también puedes configurarlo de forma opcional para que se ejecute en el clúster de GKE en el que implementas tu aplicación.

Se supone que los hooks de implementación son idempotentes. Si una acción determinada se ejecuta más de una vez, no tendrá ningún efecto adicional.

¿Cómo funcionan los hooks de implementación?

A continuación, se describe cómo se ejecutan los hooks de implementación en Cloud Deploy y cómo configurarlos:

  1. Configuras hooks en una o más etapas de la progresión de tu canalización de entrega.

  2. Antes de que se ejecute el trabajo de implementación del lanzamiento, Cloud Deploy ejecuta las tareas configuradas en una definición de predeploy en la progresión de la canalización.

    El gancho predeploy siempre se ejecuta como el primer trabajo de la fase.

  3. Después de que se ejecuta el trabajo de implementación de la versión, Cloud Deploy ejecuta las tareas configuradas en una definición de postdeploy en la progresión de la canalización.

Los hooks de implementación se ejecutan en el entorno de ejecución de Cloud Deploy.

Usa hooks de implementación con una implementación de versiones canary

Cuando configuras hooks de implementación para una implementación de versiones canary, debes tener en cuenta varios aspectos:

  • En la etapa de la canalización de entrega, la configuración del gancho (predeploy y postdeploy) se encuentra en strategy.canary.canaryDeployment o strategy.canary.customCanaryDeployment.phaseConfigs, en lugar de en strategy.standard.

  • En el caso de una versión canary automatizada, los hooks predeploy se ejecutan antes de la implementación solo en la primera fase, y los hooks postdeploy se ejecutan después de la implementación solo en la última fase (estable).

Configura tu canalización para ejecutar hooks

Configuras los hooks previos y posteriores a la implementación en una o más etapas específicas de la progresión de la canalización.

A continuación, se muestra cómo configurar hooks previos y posteriores a la implementación en una etapa de la canalización cuando se usa una estrategia de implementación de standard:

serialPipeline:
  stages:
  - targetId: hooks-staging
    profiles: []
    strategy:
      standard:
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

En este YAML, se especifica lo siguiente:

  • TASKS

    Es una lista de una o más tareas que deseas ejecutar como parte de tus hooks previos o posteriores a la implementación. Cuando especificas más de una tarea, se ejecutan de forma serial, en el orden en que se especifican. El trabajo (previo a la implementación o posterior a la implementación) falla en la primera tarea que falla, y no se ejecutan las tareas restantes.

Ejecuta los hooks en el clúster de la aplicación

De forma predeterminada, los hooks de implementación se ejecutan en el entorno de ejecución de Cloud Deploy. También puedes configurar Skaffold para que ejecute hooks de implementación en el mismo clúster en el que se ejecuta tu aplicación.

Para ejecutar hooks en el clúster de la aplicación, debes configurarlos como customActions en tu skaffold.yaml y hacer referencia a ellos con actions en la sección predeploy o postdeploy de la configuración de la etapa de la canalización de entrega: