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 Cloud Deploy
La canalización de entrega de Cloud Deploy contiene la siguiente información:
Un nombre, que usas cuando te refieres a la canalización de entrega, y una descripción
La secuencia de promoción, que describe el orden en el que se implementa en los destinos configurados.
De forma opcional, etiquetas y anotaciones.
También de forma opcional, las definiciones de destino 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 Cloud Deploy
La siguiente es una descripción de una situación de entrega continua de Cloud Deploy.
Defines 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 para Skaffold, que Cloud Deploy requiere para realizar operaciones de implementación y renderización.
Defines tus destinos, ya sea en el archivo de configuración de la canalización o en uno o más archivos separados.
Registra tu canalización con el servicio de 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.
El resultado de tu proceso de CI incluye una llamada a 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 con la fuente de renderización proporcionada, skaffold.yaml y referencias a imágenes de contenedor específicas para implementar. Para esta primera llamada para crear una versión, Cloud Deploy crea automáticamente un recursorollout, que asocia la versión con el primer entorno de destino. Según 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 Cloud Deploy.
Además, la llamada para crear una versión y, luego, 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.
Cuando estés listo para implementar tu aplicación en el siguiente destino, llama a Cloud Deploy para ascenderla.
En cada caso, la llamada para invocar la promoción hace que Cloud Deploy cree un lanzamiento nuevo.
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 Cloud Deploy.
A lo largo de la ejecución de la canalización, Cloud Deploy recopila métricas y detalles de auditoría.
Promoción
Promover una versión es implementarla en el siguiente destino de la secuencia de promoción definida en tu canalización. La primera llamada a Cloud Deploy crea una release y, luego, un recurso rollout que se usa para implementar en el primer destino de la secuencia de promoción. Cada llamada posterior para promover la versión da como resultado un lanzamiento al siguiente destino.
Aprobaciones
Puedes especificar que se necesita una aprobación para la promoción a cualquier destino. Por ejemplo, es posible que desees requerir aprobación para la promoción a un destino de producción. Para requerir aprobación para un destino, establece la requireApproval propiedad en
la definición del destino.
Cuando un destino requiere aprobación, Cloud Deploy genera un mensaje de Pub/Sub que un sistema integrado puede consumir. Por ejemplo, un sistema de tickets podría suscribirse al mensaje para iniciar un flujo de trabajo de aprobación.
Consulta Requerir aprobación para obtener más información sobre las promociones y la administración de la aprobación para las promociones.
Notificaciones
Cloud Deploy proporciona notificaciones de Pub/Sub para los siguientes eventos:
- Renderización: inicio, éxito y falla
- Implementación: inicio, éxito y falla
- Se requiere aprobación
- Se aprobó la aprobación
- Se rechazó la aprobación
Cloud Deploy usa un tema de Pub/Sub para enviar estas notificaciones.
Consulta Usa notificaciones de Cloud Deploy para obtener más detalles.
Reversiones
Cloud Deploy admite que se revierta la aplicación implementada en cualquier destino. Una reversión en Cloud Deploy consiste en activar un lanzamiento en la última versión implementada de forma correcta. El nuevo lanzamiento usa 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 Cloud Deploy
Cloud Deploy usa Skaffold para la renderización, la implementación, y la verificación. Con Skaffold, también puedes conectar tu bucle de desarrollo local a una canalización de entrega continua de Cloud Deploy.
Para obtener más información sobre cómo se integra Cloud Deploy con Skaffold, consulta la descripción general de Skaffold.
Cloud Deploy con otras Google Cloud herramientas
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, Cloud Deploy se implementa en Cloud Run y Google Kubernetes Engine, incluidos los clústeres adjuntos de GKE.
Si usas las herramientas en su mayoría Google Cloud , el flujo de origen a producción se vería de la siguiente manera:
Usa Cloud Code para crear la fuente de tu aplicación.
Cloud Code extiende varios IDE populares (VS Code, IntelliJ, Cloud Shell) para facilitar la compilación de aplicaciones que se implementarán y ejecutarán en Google Cloud.
Usa Skaffold para administrar tu bucle de desarrollo local.
Cloud Deploy usa Skaffold, a través de Cloud Build, para renderizar e implementar tus manifiestos. Esta integración significa que debes mantener un archivo
skaffold.yaml, pero no significa que debas hacer que Skaffold forme parte de tu flujo de desarrollo local. Sin embargo, puedes aprovecharlo para el desarrollo continuo.Crea tu aplicación utilizando 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án artefactos, incluidas imágenes de contenedor implementables. Puedes agregar una llamada a Cloud Deploy para crear una versión y, luego, invocar tu canalización de entrega.
Almacena tus artefactos en Artifact Registry.
Cloud Deploy recupera las imágenes de contenedor de Artifact Registry, que te permite almacenar de forma centralizada los artefactos y dependencias.
Configura tu canalización de entrega en Cloud Deploy para tomar la imagen de contenedor y, luego, implementarla en una progresión de n destinos.
Los destinos identificados en tu canalización de entrega representan clústeres de GKE, servicios o trabajos de Cloud Run, o clústeres adjuntos de GKE en los que la aplicación se implementa de forma final.
Administra tu aplicación en GKE o Cloud Run.
GKE es el Google Cloud entorno administrado para ejecutar aplicaciones alojadas en contenedores en Kubernetes.
Con Cloud Run, puedes ejecutar contenedores en un entorno sin servidores.
Los clústeres adjuntos de GKE proporcionan una experiencia de desarrollo y operaciones coherente para los entornos locales y en la nube.
Supervisa el rendimiento de tu aplicación con Google Cloud Observability.
Google Cloud Observability ofrece la supervisión y el registro integrados para tu aplicación.
¿Qué sigue?
Si deseas obtener una vista rápida y fácil de crear una canalización de entrega y usarla para implementar una aplicación, prueba las guías de inicio rápido.
Prueba una de las explicaciones de Cloud Deploy.
Obtén más información sobre cómo funcionan juntos los componentes de Cloud Deploy.
Consulta Google Cloud Framework de Well-Architected: Excelencia operativa para ver artículos sobre cómo usar los principios de la excelencia operativa para compilar una base de entrega automatizada.