Descripción general de Google Cloud Deploy

Google Cloud Deploy es un servicio administrado que automatiza la entrega de tus aplicaciones a una serie de entornos de destino en una secuencia de promoción definida. Cuando desees implementar tu aplicación actualizada, debes crear una versión, cuyo ciclo de vida se administra mediante una canalización de entrega.

Cómo funciona una canalización de Google Cloud Deploy

La canalización de entrega de Google Cloud Deploy contiene la siguiente información:

  • Un nombre que se usa cuando se hace referencia a la canalización de entrega.

  • La secuencia de promoción, que describe el orden en el que se implementa en los destinos configurados

  • De forma opcional, los destinos en sí

Los destinos se pueden definir en el mismo archivo de configuración de la canalización de entrega o en uno o más archivos separados. Varias canalizaciones de entrega pueden usar los mismos destinos, pero un destino determinado solo se puede usar una vez en una canalización de entrega determinada.

El proceso de entrega de Google Cloud Deploy

La siguiente es una descripción de lo que sucede en una situación de entrega continua simple de Google Cloud Deploy.

  1. Debes definir tu canalización de entrega en un archivo de configuración YAML.

    Este archivo de configuración define la secuencia de promoción en la que se implementa la aplicación en una serie de destinos.

    También necesitas una configuración de Skaffold, que Google Cloud Deploy requiere para realizar operaciones de implementación y renderización.

  2. Debes definir tus objetivos en el archivo de configuración de la canalización o en un archivo o en archivos separados.

  3. Registra tu canalización con el servicio de Google Cloud Deploy.

    Ahora que el servicio conoce tu aplicación, administra la implementación en destinos de acuerdo con la secuencia de promoción definida.

  4. El resultado de tu proceso de CI incluye una llamada a Google Cloud Deploy para iniciar tu canalización de entrega.

    Esta llamada crea un recurso release, que representa el manifiesto renderizado para cada destino, cada uno de los cuales se genera mediante la fuente de procesamiento proporcionada, skaffold.yaml y las referencias a imágenes de contenedor específicas que se implementarán. En esta primera llamada a fin de crear una versión, Google Cloud Deploy crea automáticamente un recurso rollout, que asocia la versión con el primer entorno de destino. En función de ese lanzamiento, tu aplicación se implementa en el primer destino.

    Puedes usar cualquier herramienta de CI, siempre que genere una o más imágenes de contenedor para proporcionar a tu canalización de entrega de Google Cloud Deploy.

    Además, la llamada para crear una versión e invocar una canalización de entrega no tiene que provenir de la herramienta de CI. Puede provenir de una secuencia de comandos o de cualquier sistema que responda a la finalización del proceso de CI.

  5. Cuando estés listo para implementar tu aplicación en el siguiente destino, llama a Google Cloud Deploy a fin de ascenderla.

    En cada caso, la llamada para invocar la promoción hace que Google Cloud Deploy cree un lanzamiento nuevo.

  6. La promoción continúa a través de todos los objetivos de tu secuencia de promoción, cuyo último es prod (o cualquier nombre que uses para que tu objetivo final coloque la aplicación en producción).

    El proceso de creación y promoción de la versión se describe con más detalle en Arquitectura de servicios de Google Cloud Deploy.

A lo largo de la ejecución de la canalización, Google Cloud Deploy recopila métricas y detalles de auditoría.

Promoción

Para promover un lanzamiento, debes implementarlo en el siguiente destino en la secuencia de promoción definida en tu canalización. La primera llamada a Google Cloud Deploy crea un release, luego un recurso rollout que se usa para implementar en el primer destino de la secuencia de promoción. Cada llamada subsiguiente para promover la versión da como resultado un lanzamiento al siguiente destino.

Aprobaciones

Puedes especificar que se necesite una aprobación para ascender a cualquier destino. Por ejemplo, es posible que desees solicitar la aprobación para el ascenso a un destino de producción. Para requerir la aprobación de un destino, establece la propiedad requireApproval en la definición de destino.

Cuando un destino requiere aprobación, Google Cloud Deploy genera un mensaje de Pub/Sub que un sistema integrado (como un sistema de tickets) puede consumir a ese mensaje.

Consulta Administra la canalización de entrega a fin de obtener más información para solicitar aprobaciones y aprobaciones de promociones.

Notificaciones

Google Cloud Deploy proporciona notificaciones de Pub/Sub para los siguientes eventos:

  • Renderizar: inicio, éxito y falla
  • Implementación: inicio, éxito y falla
  • Se requiere aprobación
  • Aprobación aprobada
  • Se rechazó la aprobación

Google Cloud Deploy usa un tema de Pub/Sub para enviar estas notificaciones.

Consulta Usa las notificaciones con tu canalización para obtener más detalles.

Reversiones

Google Cloud Deploy admite que se revierta la aplicación implementada en cualquier destino. Una reversión en Google Cloud Deploy consiste en activar un lanzamiento en la última versión implementada de forma correcta, mediante los mismos parámetros que se usaron en esa implementación exitosa.

Consulta Revierte una implementación para obtener más detalles.

Acerca de Skaffold y Google Cloud Deploy

Google Cloud Deploy usa Skaffold para separar las herramientas de renderización de la canalización de entrega. Esto hace que la renderización del manifiesto sea más flexible sin afectar la forma en que defines la canalización de entrega. Puedes usar Skaffold a fin de configurar con facilidad un lugar de trabajo de desarrollo local para usarlo con las canalizaciones de entrega continua de Google Cloud Deploy.

Consulta la Guía de inicio rápido de Skaffold para obtener información básica.

Google Cloud Deploy con otras herramientas de Google Cloud

Google Cloud Deploy admite casi cualquier herramienta ascendente en una canalización de CI/CD. Es decir, puedes usar cualquier entorno de desarrollo y repositorio de código fuente, cualquier sistema de integración continua (CI) y cualquier repositorio de artefactos.

En sentido descendente, Google Cloud Deploy solo se implementa en Google Kubernetes Engine.

Si usas las herramientas de Google Cloud en su mayoría, el flujo de origen a producción se vería de la siguiente manera:

  1. Usa Cloud Code para crear la fuente de tu aplicación.

    Cloud Code extiende varios IDE populares (VS Code, IntelliJ y Cloud Shell) para facilitar la compilación de aplicaciones que se implementarán y ejecutarán en Google Cloud.

  2. Usa Skaffold para administrar tu bucle de desarrollo local.

    Google Cloud Deploy usa Skaffold, a través de Cloud Build, para renderizar e implementar los manifiestos. Esto significa que debes mantener un archivo skaffold.yaml, pero no significa que necesites Skaffold como parte del flujo de desarrollo local. Pero puedes aprovecharlo para el desarrollo continuo.

  3. Compila tu aplicación con Cloud Build.

    Cloud Build te permite configurar una canalización de CI que se puede activar desde una confirmación en tu repositorio de código fuente. El resultado de Cloud Build será artefactos que incluyen imágenes de contenedor implementables. Puedes agregar una llamada a Google Cloud Deploy para crear una versión y, también, invocar tu canalización de entrega.

  4. Almacena tus artefactos en Artifact Registry.

    Google Cloud Deploy recupera las imágenes de contenedor de Artifact Registry, que te permite almacenar de forma centralizada los artefactos y dependencias.

  5. Configura tu canalización de entrega en Google Cloud Deploy para tomar la imagen de contenedor y, luego, implementarla en una progresión de n destinos.

    Cada uno de los destinos identificados en la canalización de entrega representa un clúster de GKE en el que la aplicación se implementa de forma final.

  6. Administra tu aplicación en GKE.

    GKE es el entorno administrado de Google Cloud para ejecutar aplicaciones alojadas en contenedores en Kubernetes.

  7. Supervisar el rendimiento de la aplicación mediante Google Cloud's operations suite.

    Google Cloud's operations suite ofrece la supervisión y el registro integrados para tu aplicación.

¿Qué sigue?