En este documento se describe un conjunto integrado de Google Cloud herramientas
para configurar un sistema de desarrollo, integración continua (CI) y
entrega continua (CD) que puedes usar para desarrollar y desplegar aplicaciones en
Google Kubernetes Engine (GKE).
Este documento de arquitectura de referencia está dirigido tanto a desarrolladores de software como a operadores. En esta guía se da por supuesto que sabes cómo ejecutar comandos gcloud
enGoogle Cloud y cómo desplegar contenedores de aplicaciones en GKE.
Arquitectura
En el siguiente diagrama se muestran los recursos que se usan en esta arquitectura:
Esta arquitectura incluye los siguientes componentes:
- Cloud Code como espacio de trabajo de desarrollo. En este espacio de trabajo, puedes ver los cambios en el clúster de desarrollo, que se ejecuta en minikube. Ejecuta Cloud Code y el clúster de minikube en Cloud Shell. Cloud Shell es un entorno de desarrollo online al que puedes acceder desde tu navegador. Tiene recursos de computación, memoria y un entorno de desarrollo integrado (IDE), así como Cloud Code instalado.
Cloud Build para compilar y probar la aplicación (la parte de "CI" del flujo de procesamiento)
Esta parte de la canalización incluye las siguientes acciones:
- Cloud Build monitoriza los cambios en el repositorio de origen mediante un activador de Cloud Build.
- Cuando se confirma un cambio en la rama principal, el activador de Cloud Build hace lo siguiente:
- Vuelve a compilar el contenedor de la aplicación.
- Coloca artefactos de compilación en un segmento de Cloud Storage.
- Coloca el contenedor de la aplicación en Artifact Registry.
- Ejecuta pruebas en el contenedor.
- Llama a Cloud Deploy para desplegar el contenedor en el entorno de preproducción. En este ejemplo, el entorno de staging es un clúster de Google Kubernetes Engine.
- Si la compilación y las pruebas se realizan correctamente, puedes usar Cloud Deploy para promover el contenedor del entorno de preproducción al de producción.
Cloud Deploy para gestionar el despliegue, que es la parte de "CD" del flujo de procesamiento. En esta parte de la canalización, Cloud Deploy hace lo siguiente:
- Registra una pipeline de entrega y objetivos. Los destinos representan los clústeres de staging y de producción.
- Crea un segmento de Cloud Storage y almacena el origen de renderizado de Skaffold y los manifiestos renderizados en ese segmento.
- Genera una nueva versión por cada cambio en el código fuente.
- Despliega la aplicación en el entorno de producción. Para que esta implementación pase a producción, un operador (u otra persona designada) debe aprobarla manualmente. En esta arquitectura, el entorno de producción es un clúster de Google Kubernetes Engine.
En esta arquitectura, la configuración se comparte entre los entornos de desarrollo, de preproducción y de producción a través de Skaffold, una herramienta de línea de comandos que facilita el desarrollo continuo de aplicaciones nativas de Kubernetes.
Google Cloud almacena el código fuente de la aplicación en GitHub.
Esta arquitectura usa Google Cloud productos para la mayoría de los componentes del sistema, y Skaffold permite la integración del sistema. Como Skaffold es de código abierto, puedes usar estos principios para crear un sistema similar con una combinación de componentes de Google Cloud, internos y de terceros. La modularidad de esta solución significa que puedes adoptarla de forma incremental como parte de tu canalización de desarrollo e implementación.
Casos prácticos
Estas son las principales funciones de este sistema integrado:
Desarrolla y despliega soluciones más rápido.
El bucle de desarrollo es eficiente porque puedes validar los cambios en el espacio de trabajo del desarrollador. El despliegue es rápido porque el sistema de CI/CD automático y la mayor paridad entre los entornos te permiten detectar más problemas al desplegar cambios en producción.
Aprovecha la mayor paridad en los entornos de desarrollo, de preproducción y de producción.
Los componentes de este sistema usan un conjunto común de Google Cloud herramientas.
Reutiliza configuraciones en los distintos entornos.
Esta reutilización se lleva a cabo con Skaffold, que permite usar un formato de configuración común para los distintos entornos. También permite a los desarrolladores y operadores actualizar y usar la misma configuración.
Aplica el gobierno desde el principio del flujo de trabajo.
Este sistema aplica pruebas de validación para la gobernanza en producción, en el sistema de integración continua y en el entorno de desarrollo. Aplicar el gobierno en el entorno de desarrollo permite detectar y solucionar los problemas antes.
Deja que las herramientas con opiniones definidas gestionen la distribución de tu software.
La entrega continua está totalmente gestionada, lo que separa las fases de tu canalización de CD de los detalles de la renderización y la implementación.
Implementación
Para desplegar esta arquitectura, consulta Desarrollar y desplegar aplicaciones en contenedores mediante una canalización de CI/CD.
Siguientes pasos
- Para saber cómo desplegar en una instancia privada de GKE, consulta Desplegar en un clúster privado en una red de nube privada virtual.
- Para obtener información sobre cómo implementar, mejorar y medir la automatización de la implementación, consulta el artículo Automatización de la implementación.