Puntos de control
Set up your environment
/ 10
Deploy the Spinnaker chart using Kubernetes Helm
/ 20
Building the Docker image
/ 20
Create service load balancers
/ 20
Deploy an image to production
/ 10
Triggering pipeline from code changes
/ 20
Canalizaciones de entrega continua con Spinnaker y Kubernetes Engine
- GSP114
- Descripción general
- Arquitectura de la canalización
- Configuración y requisitos
- Tarea 1. Configura tu entorno
- Tarea 2. Configura Cloud Pub/Sub para activar las canalizaciones de Spinnaker
- Tarea 3: Implementa Spinnaker con Helm
- Tarea 4. Compila la imagen de Docker
- Tarea 5. Configura tus canalizaciones de implementación
- Tarea 6. Activa la canalización mediante cambios de código
- Tarea 7: Observa las implementaciones de versiones canary
- ¡Felicitaciones!
GSP114
Descripción general
En este lab práctico, aprenderás a crear una canalización de entrega continua con Google Kubernetes Engine, Google Cloud Source Repositories, Google Cloud Container Builder y Spinnaker. Luego de crear una aplicación de prueba, debes configurar estos servicios para compilarla, probarla e implementarla automáticamente. Cuando modifiques el código de la aplicación, este cambio activará la canalización de entrega continua para que vuelvas a compilar, a probar y a implementar automáticamente la nueva versión.
Objetivos
- Configurar tu entorno mediante el inicio de Google Cloud Shell, la creación de un clúster de Kubernetes Engine y la configuración de tu identidad y el esquema de administración de usuarios
- Descargar una aplicación de prueba, crear un repositorio de Git y luego subirlo a Google Cloud Source Repository
- Implementar Spinnaker en Kubernetes Engine con Helm
- Crear una imagen de Docker
- Generar activadores para crear imágenes de Docker cuando tu aplicación cambie
- Configurar una canalización de Spinnaker para implementar de forma confiable y continua tu aplicación en Kubernetes Engine
- Implementar un cambio de código que active la canalización y observar su lanzamiento en producción
Arquitectura de la canalización
Para poder entregarles continuamente actualizaciones de aplicaciones a tus usuarios, necesitas un proceso automatizado que compile, pruebe y actualice tu software de manera confiable. Los cambios de código deberían transmitirse automáticamente a través de una canalización que incluya la creación de artefactos, pruebas de unidades, pruebas funcionales y el lanzamiento en producción. En algunos casos querrás que una actualización de código se aplique solo a un subconjunto de sus usuarios, de modo que se emplee de forma realista antes de enviarla a la base de usuarios completa. Si uno de estos lanzamientos canary resulta insatisfactorio, tu proceso automatizado debe ser capaz de revertir rápidamente los cambios del software.
Con Kubernetes Engine y Spinnaker, puedes crear una sólida transmisión de entrega continua que te permita garantizar que el software se entregue tan rápido como se lo desarrolla y valida. A pesar de que tu objetivo final es la iteración rápida, primero debes asegurarte de que cada revisión de la aplicación pase por una serie de validaciones automatizadas antes de convertirse en candidata para el lanzamiento en producción. Cuando un cambio determinado haya sido examinado por la automatización, también podrás validar la aplicación manualmente y realizar más pruebas previas al lanzamiento.
Luego de que tu equipo decida que la aplicación está lista para producción, un miembro del equipo puede aprobarla para la implementación de producción.
Canalización de entrega de aplicaciones
En este lab, compilarás la canalización de entrega continua que se muestra en el siguiente diagrama.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar su lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:
- El botón Abrir la consola de Google
- Tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta. -
Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.
-
Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.
Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepte los términos y condiciones.
- No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No se registre para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Cloud en esta pestaña.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
- Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Tarea 1. Configura tu entorno
Configura la infraestructura y las identidades necesarias para este lab. Primero crearás un clúster de Kubernetes Engine para implementar Spinnaker y la aplicación de ejemplo.
- Configura la zona de procesamiento predeterminada:
- Crea un clúster de Kubernetes Engine con el instructivo de aplicaciones de ejemplo de Spinnaker:
La creación del clúster tarda entre 5 y 10 minutos en completarse. Espera a que se termine de aprovisionar el clúster antes de continuar.
Una vez terminado, verás un informe que mostrará el nombre, la ubicación, la versión, la dirección IP, el tipo de máquina, la versión de nodo, la cantidad de nodos y el estado del clúster, lo que indicará que se está ejecutando el clúster.
Configura la administración de identidades y accesos
Crea una cuenta de servicio en Cloud Identity & Access Management (Cloud IAM) para delegarle permisos a Spinnaker y, así, permitirle almacenar datos en Cloud Storage. Spinnaker almacena los datos de la canalización en Cloud Storage para garantizar su confiabilidad y resiliencia. Si tu implementación de Spinnaker falla inesperadamente, puedes crear una implementación idéntica en solo minutos con acceso a los mismos datos de canalización que la original.
Sube tu secuencia de comandos de inicio a un bucket de Cloud Storage siguiendo estos pasos:
- Crea la cuenta de servicio:
- Almacena la dirección de correo electrónico de la cuenta de servicio y el ID del proyecto actual en variables de entorno para utilizarlas en comandos posteriores:
- Vincula el rol
storage.admin
a tu cuenta de servicio:
- Descarga la clave de la cuenta de servicio. Más adelante, instalarás Spinnaker y subirás esta clave a Kubernetes Engine.
Resultado:
Tarea 2. Configura Cloud Pub/Sub para activar las canalizaciones de Spinnaker
- Crea el tema de Cloud Pub/Sub para las notificaciones de Container Registry:
- Crea una suscripción de la que Spinnaker pueda leer para recibir las notificaciones de las imágenes que se envíen:
- Otórgale permisos a la cuenta de servicio de Spinnaker para que lea desde la suscripción gcr-triggers:
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si configuraste correctamente el entorno, verás una puntuación de evaluación.
Tarea 3: Implementa Spinnaker con Helm
En esta sección, utilizarás Helm para implementar Spinnaker desde el repositorio de Gráficos. Helm es un administrador de paquetes que puedes utilizar para configurar e implementar aplicaciones de Kubernetes.
Helm ya está instalado en tu Cloud Shell.
Configura Helm
- Otorga a Helm el rol de administrador del clúster en tu clúster:
- Otorga a Spinnaker el rol de
cluster-admin
para que pueda implementar recursos en todos los espacios de nombres:
- Agrega las implementaciones de tablas estables a los repositorios utilizables de Helm (incluido Spinnaker):
Configura Spinnaker
- En Cloud Shell, crea un bucket para Spinnaker a fin de almacenar la configuración de tu canalización:
- Ejecuta el siguiente comando para crear un archivo
spinnaker-config.yaml
en el que se describe de qué manera Helm debe instalar Spinnaker:
Implementa el chart de Spinnaker
- Utiliza la interfaz de línea de comandos de Helm para implementar el chart con tu configuración establecida:
- Luego de que se complete el comando, ejecuta el siguiente comando para configurar la redirección de puertos hacia Spinnaker desde Cloud Shell:
- Para abrir la interfaz de usuario de Spinnaker, haz clic en el ícono Vista previa en la web, ubicado en la parte superior de la ventana de Cloud Shell, y selecciona Vista previa en el puerto 8080.
Se abrirá la pantalla de bienvenida seguida de la interfaz de usuario de Spinnaker.
Deja esa pestaña abierta. Por aquí accederás a la IU de Spinnaker.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si implementaste correctamente el chart de Spinnaker por medio de Kubernetes Helm, verás una puntuación de evaluación.
Tarea 4. Compila la imagen de Docker
En esta sección, configurarás Cloud Build para detectar cambios en el código fuente de tu aplicación, compilar una imagen de Docker y enviarla a Container Registry.
Crea tu repositorio de código fuente
- En la pestaña de Cloud Shell, descarga el código fuente de la aplicación de ejemplo:
- Descomprime el código fuente:
- Cambia al directorio del código fuente:
- Configura el nombre de usuario y la dirección de correo electrónico para tus confirmaciones de Git en este repositorio. Reemplaza
[USERNAME]
por un nombre de usuario que crees:
- Realiza la confirmación inicial de tu repositorio de código fuente:
- Crea un repositorio para alojar el código:
- Agregue el repositorio que acaba de crear como remoto:
- Envía tu código a la rama principal del repositorio nuevo:
-
Verifica que puedas ver tu código fuente en la consola. Para ello, haz clic en Menú de navegación > Source Repositories.
-
Haz clic en sample-app.
Configura tus activadores de compilación
Configura Container Builder para compilar y enviar tus imágenes de Docker cada vez que envíes las etiquetas Git a tu repositorio de código fuente. Container Builder comprueba automáticamente tu código fuente, compila la imagen de Docker desde Dockerfile en tu repositorio y envía esa imagen a Google Cloud Container Registry.
-
En la consola de Cloud, haz clic en Menú de navegación > Cloud Build > Activadores.
-
Haz clic en Crear activador.
-
Establece la siguiente configuración de activación:
-
Nombre:
sample-app-tags
- Evento: Envío de etiqueta nueva
- Selecciona el repositorio
sample-app
recién creado. -
Etiqueta:
.*(cualquier etiqueta)
-
Configuración:
Archivo de configuración de Cloud Build (YAML o JSON)
-
Ubicación del archivo de configuración de Cloud Build:
cloudbuild.yaml
- Haz clic en CREAR.
De ahora en adelante, cada vez que envíes una etiqueta de Git (.*) a tu repositorio de código fuente, Container Builder compilará y enviará automáticamente tu aplicación como una imagen de Docker a Container Registry.
Prepara tus manifiestos de Kubernetes para utilizar en Spinnaker
Spinnaker necesita tener acceso a tus manifiestos de Kubernetes para poder implementarlos en tus clústeres. En esta sección, se creará un bucket de Cloud Storage al que se propagarán los manifiestos durante el proceso de CI en Cloud Build. Una vez que tus manifiestos estén en Cloud Storage, Spinnaker podrá descargarlos y aplicarlos durante la ejecución de tu canalización.
- Crea el bucket:
- Habilita el control de versiones en el bucket para tener un historial de tus manifiestos:
- Configura el ID del proyecto correcto en tus manifiestos de implementación de Kubernetes:
- Confirma los cambios en el repositorio:
Compila tu imagen
Sigue estos pasos para enviar tu primera imagen:
- En Cloud Shell, en el directorio
sample-app
, crea una etiqueta Git:
- Envía la etiqueta:
Resultado:
- Ve a la consola de Cloud. En Cloud Build, haz clic en Historial, en el panel izquierdo, para verificar que se haya activado la compilación. En caso contrario, verifica que se haya configurado correctamente el activador en la sección anterior.
Permanece en esta página y espera a que se complete la compilación antes de seguir con la próxima sección.
compilación
muestra errores, haz clic en el ID de compilación
para abrir la página de detalles de la compilación y, luego, haz clic en REINTENTAR.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si compilaste correctamente la imagen de Docker, verás una puntuación de evaluación.
Tarea 5. Configura tus canalizaciones de implementación
Ahora que tus imágenes se compilan automáticamente, debes implementarlas en el clúster de Kubernetes.
Debes implementarlas en un entorno de escala reducida verticalmente para realizar pruebas de integración. Una vez superadas las pruebas de integración, debes aprobar los cambios de forma manual para implementar el código en los servicios de producción.
Instala la CLI de spin para administrar Spinnaker
spin es una utilidad de línea de comandos que sirve para administrar las aplicaciones y canalizaciones de Spinnaker.
- Descarga la versión 1.14.0 de
spin
.
- Haz que
spin
sea ejecutable:
Crea la canalización de implementación
- Usa spin para crear una aplicación denominada sample en Spinnaker. Configura la dirección de correo electrónico del propietario de la aplicación en Spinnaker:
A continuación, crea la canalización de entrega continua. En este instructivo, se configura la canalización para detectar el momento en que llega una imagen de Docker con una etiqueta que contiene el prefijo "v" a su Container Registry.
- Desde tu directorio de código fuente
sample-app
, ejecuta el siguiente comando para subir una canalización de ejemplo a tu instancia de Spinnaker:
Activa la ejecución de tu canalización de forma manual y visualízala
La configuración que acabas de crear utiliza las notificaciones de las imágenes recién etiquetadas que se envían con el fin de activar una canalización de Spinnaker. En uno de los pasos anteriores, enviaste una etiqueta a Cloud Source Repositories que activó Cloud Build para que compilara y enviara tu imagen a Container Registry. Para verificar la canalización, actívala manualmente
.
- Ve a la pestaña del navegador que muestra la IU de Spinnaker.
Si no logras encontrarla, puedes seleccionar Vista previa en la Web > Vista previa en el puerto 8080 en la ventana de Cloud Shell para volver a esta pestaña.
- En la IU de Spinnaker, haz clic en Aplicaciones, en la parte superior de la pantalla, para ver tu lista de aplicaciones administradas.
Tu aplicación es sample. Si no ves sample, intenta actualizar la pestaña Applications de Spinnaker.
-
Haz clic en sample para ver la implementación de tu aplicación.
-
Haz clic en Pipelines en la parte superior para ver el estado de las canalizaciones de aplicaciones.
-
Haz clic en Start Manual Execution, selecciona Deploy en Select Pipeline y, luego, haz clic en Run para iniciar la canalización por primera vez.
-
Haz clic en Execution Details para ver más información sobre el progreso de la canalización.
La barra de progreso muestra el estado de la canalización de implementación y sus pasos.
Los pasos en color azul son los que se encuentran en ejecución, los verdes son los que se completaron correctamente y los rojos son los que fallaron.
- Haz clic en una etapa para ver sus detalles.
Luego de 3 a 5 minutos, se completa la fase de pruebas de integración y se debe aprobar la canalización de forma manual para continuar con la implementación.
- Coloca el cursor sobre el ícono de “persona” amarillo y haz clic en Continuar.
Tu lanzamiento continúa con las implementaciones del frontend y backend de producción. Tarda unos minutos en completarse.
-
Para visualizar la aplicación, en la parte superior de la IU de Spinnaker, selecciona Infrastructure > Load Balancers.
-
Desplázate hacia abajo en la lista de balanceadores de cargas y haz clic en Default, en
service sample-frontend-production
. Los detalles del balanceador de cargas aparecerán en el lado derecho de la página. De lo contrario, tal vez debas actualizar el navegador. -
Desplázate hacia abajo por el panel de detalles ubicado en la parte derecha y copia la dirección IP de tu aplicación. Para ello, haz clic en el botón de portapapeles en la IP de Ingress. Es posible que el vínculo de la IP de Ingress de la IU de Spinnaker use HTTPS de forma predeterminada, mientras que la aplicación está configurada para usar HTTP.
- Pega la dirección en una pestaña nueva del navegador para ver la aplicación. Es posible que veas que se muestra la versión canary, pero, si actualizas, también verás la versión de producción.
Ya activaste manualmente la canalización para compilar, probar e implementar tu aplicación.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si creaste correctamente balanceadores de cargas de servicio, verás una puntuación de evaluación.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si implementaste correctamente una imagen en producción, verás una puntuación de evaluación.
Tarea 6. Activa la canalización mediante cambios de código
Para probar la canalización de extremo a extremo, haz un cambio de código, envía una etiqueta Git y revisa la ejecución de la canalización en respuesta. Al enviar una etiqueta Git que comienza con "v", activas Container Builder para que compile una nueva imagen de Docker y la envíe a Container Registry. Spinnaker detecta que la nueva etiqueta de la imagen comienza con "v" y activa una canalización para implementar la imagen en versiones canary, ejecutar pruebas y desplegar la misma imagen en todos los Pods de la implementación.
- Desde tu directorio sample-app, cambia el color de la aplicación de naranja a azul:
- Etiqueta tu cambio y envíalo al repositorio del código fuente:
- En la consola, en Cloud Build > Historial, espera un par de minutos para que aparezca la compilación nueva. Es posible que debas actualizar la página. Espera a que se complete la compilación antes de continuar con el siguiente paso.
compilación
tiene errores, haz clic en el ID de compilación
y, luego, en REINTENTAR.- Regresa a la IU de Spinnaker y haz clic en Pipelines para ver cómo la canalización comienza a implementar la imagen. La canalización activada automáticamente tardará unos minutos en aparecer. Es posible que debas actualizar la página.
Prueba la tarea completada
Haz clic en Revisar mi progreso para verificar la tarea realizada. Si activaste la canalización correctamente con cambios de código, verás una puntuación de evaluación.
Tarea 7: Observa las implementaciones de versiones canary
-
Cuando se pause la implementación, en espera para lanzarse a producción, regresa a la página web en la que se visualiza tu aplicación en ejecución y comienza a actualizar la pestaña que contenga tu aplicación. Cuatro de tus backends ejecutarán la versión anterior de tu aplicación y solo uno ejecutará la canary. La versión nueva de tu aplicación debería aparecer en color azul luego de actualizar la pestaña, aproximadamente, unas cinco veces.
-
Cuando se complete la canalización, tu aplicación se verá como la siguiente captura de pantalla. Ten en cuenta que el color cambió a azul porque cambió tu código y que el campo Versión ahora aparece como
canary
.
Ya lanzaste correctamente tu aplicación en todo el entorno de producción.
- Además, puedes revertir este cambio si deshaces tu confirmación anterior. Las reversiones agregan una etiqueta nueva (v1.0.2) y la vuelven a enviar a través de la misma canalización que utilizaste para implementar v1.0.1:
Presiona CTRL + O, INTRO, CTRL + X.
- Una vez que se complete la compilación y, luego, la canalización, para verificar la reversión, haz clic en Infrastructure > Load Balancers y, luego, en service sample-frontend-production Default y copia la dirección IP de Ingress en una pestaña nueva.
Ahora, se muestra la aplicación nuevamente en naranja y puedes ver el número de versión de Producción
.
¡Felicitaciones!
Completaste correctamente el lab Canalizaciones de entrega continua con Spinnaker y Kubernetes Engine.
Finaliza la Quest
Este lab de autoaprendizaje forma parte de las Quests Google Cloud Solutions I: Scaling Your Infrastructure y DevOps Essentials. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Realiza el próximo lab
Continúa tu Quest con Cómo ejecutar servidores dedicados para juegos en Google Kubernetes Engine
Próximos pasos y más información
- Aprende sobre la implementación continua con Jenkins
- Más información sobre implementaciones de Spinnaker en Compute Engine
- Implementa Jenkins en Kubernetes Engine
- Usa Spinnaker con Ansible para entregas continuas
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 21 de noviembre de 2023
Prueba más reciente del lab: 21 de noviembre de 2023
Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.