arrow_back

Implement DevOps Workflows in Google Cloud: Lab de desafío

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Implement DevOps Workflows in Google Cloud: Lab de desafío

Lab 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP330

Labs de autoaprendizaje de Google Cloud

Descripción general

En un lab de desafío, se le proporcionarán una situación y un conjunto de tareas. En lugar de seguir instrucciones paso a paso, deberá utilizar las habilidades aprendidas en los labs de la Quest a fin de decidir cómo completar las tareas por su cuenta. Un sistema de puntuación automatizado (que se muestra en esta página) le proporcionará comentarios acerca de si completó las tareas correctamente.

En un lab de desafío, no se explican conceptos nuevos de Google Cloud, sino que se espera que amplíe las habilidades que adquirió, como cambiar los valores predeterminados y leer o investigar los mensajes de error para corregir sus propios errores.

Debe completar correctamente todas las tareas dentro del período establecido para obtener una puntuación del 100%.

Se recomienda este lab a los estudiantes inscritos en el curso Implement DevOps Workflows in Google Cloud. ¿Aceptas el desafío?

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)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Situación del desafío

Luego de tu reciente contratación como ingeniero DevOps para Cymbal Superstore hace unos meses, aprendiste los pormenores de la forma en que la empresa opera su sitio web de comercio electrónico. Específicamente, el equipo de DevOps está trabajando en una canalización de CI/CD a gran escala en la que quiere contar contigo para la compilación. De este modo, la empresa puede ayudar a los desarrolladores a automatizar tareas, colaborar de forma más eficaz con otros equipos y lanzar software con más frecuencia y confiabilidad. Tu experiencia con Cloud Source Repositories, Artifact Registry, Docker y Cloud Build será de gran ayuda, ya que Cymbal Superstore desea usar todos los servicios nativos de Google Cloud para su canalización.

logotipo de cymbal superstore

Antes de comenzar este proyecto, el equipo de DevOps desea que demuestres tus nuevas habilidades. Como parte de esta demostración, tienen una lista de tareas que les gustaría que realizaras durante un período determinado en un entorno de zona de pruebas.

Tu desafío

Tus tareas incluyen lo siguiente:

  • Crear un clúster de GKE basado en un conjunto de parámetros de configuración proporcionados
  • Crear un repositorio de código fuente de Google para alojar el código de tu aplicación de Go
  • Crear activadores de Cloud Build que implementen una aplicación de desarrollo y producción
  • Enviar actualizaciones a la app y crear nuevas compilaciones
  • Revertir la aplicación de producción a una versión anterior

En general, vas a crear una canalización de CI/CD simple con Cloud Source Repositories, Artifact Registry y Cloud Build.

Tarea 1. Crea los recursos del lab

En esta sección, inicializarás tu proyecto de Google Cloud para el entorno de demostración. Habilita las APIs requeridas, configura Git en Cloud Shell, crea un repositorio de Docker de Artifact Registry y crea un clúster de GKE en el que ejecutarás tus aplicaciones de producción y desarrollo.

  1. Ejecuta el siguiente comando para habilitar las APIs de GKE, Cloud Build y Cloud Source Repositories:
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ sourcerepo.googleapis.com
  1. Agrega el rol de desarrollador de Kubernetes para la cuenta de servicio de Cloud Build:
export PROJECT_ID=$(gcloud config get-value project) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \ --format="value(projectNumber)")@cloudbuild.gserviceaccount.com --role="roles/container.developer"
  1. Ejecuta el siguiente comando para configurar Git en Cloud Shell, reemplaza <email> por tu dirección de correo electrónico generada en el lab y <name> por tu nombre.
git config --global user.email <email> git config --global user.name <name>
  1. Crea un repositorio de Docker de Artifact Registry llamado my-repository en la región para almacenar tus imágenes de contenedor.

  2. Crea un clúster estándar de GKE llamado hello-cluster con la siguiente configuración:

Parámetro de configuración Valor
Zona
Canal de versiones Regular
Versión del clúster 1.27.8-gke.1067004 o una versión más reciente
Escalador automático del clúster Habilitado
Cantidad de nodos 3
Cantidad mínima de nodos 2
Cantidad máxima de nodos 6
  1. Crea los espacios de nombres prod y dev para tu clúster.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear los recursos del lab

Tarea 2: Crea un repositorio en Cloud Source Repositories

En esta tarea, crearás un repositorio sample-app en Cloud Source Repositories y lo inicializarás con código de muestra. Este repositorio aloja el código de tu aplicación de Go y será la fuente principal para activar las compilaciones.

  1. Crea un repositorio vacío llamado sample-app en Cloud Source Repositories.

  2. Clona el repositorio sample-app de Cloud Source Repository en Cloud Shell.

  3. Usa el siguiente comando para copiar el código de muestra en el directorio sample-app:

cd ~ gsutil cp -r gs://spls/gsp330/sample-app/* sample-app
  1. Ejecuta el siguiente comando, que reemplazará automáticamente los marcadores de posición <your-region> y <your-zone> en los archivos cloudbuild-dev.yaml y cloudbuild.yaml por la región y la zona asignadas de tu proyecto:
export REGION="{{{project_0.default_region | REGION}}}" export ZONE="{{{project_0.default_zone | ZONE}}}" for file in sample-app/cloudbuild-dev.yaml sample-app/cloudbuild.yaml; do sed -i "s/<your-region>/${REGION}/g" "$file" sed -i "s/<your-zone>/${ZONE}/g" "$file" done
  1. Realiza tu primera confirmación con el código de muestra que agregaste al directorio sample-app y envía los cambios a la rama master.

  2. Crea una rama llamada dev. Realiza una confirmación con el código de muestra que agregaste al directorio sample-app y envía los cambios a la rama dev.

  3. Verifica que almacenaste el código de muestra y las ramas en el repositorio de código fuente.

repositorio de código fuente con ramas

El código que acabas de clonar contiene una aplicación de Go simple con dos puntos de entrada: rojo y azul. En cada una de ellas se muestra un cuadrado de color simple en la página web, dependiendo del punto de entrada que elijas.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear el repositorio en Cloud Source Repositories

Tarea 3: Crea los activadores de Cloud Build

En esta sección, debes crear dos activadores de Cloud Build.

  • El primer activador detecta cambios en la rama master y compila una imagen de Docker de tu aplicación, la envía a Google Artifact Registry y también implementa la versión más reciente de la imagen en el espacio de nombres prod de tu clúster de GKE.

  • El segundo activador escucha cambios en la rama dev y compila una imagen de Docker de tu aplicación. Luego, la enviará a Google Artifact Registry y se implementará la versión más reciente de la imagen en el espacio de nombres dev de tu clúster de GKE.

  1. Crea un activador de Cloud Build llamado sample-app-prod-deploy con la siguiente configuración:

    • Evento: Enviar a una rama
    • Repositorio de código fuente: sample-app
    • Rama: ^master$
    • Archivo de configuración de Cloud Build: cloudbuild.yaml
  2. Crea un activador de Cloud Build llamado sample-app-dev-deploy con la siguiente configuración:

    • Evento: Enviar a una rama
    • Repositorio de código fuente: sample-app
    • Rama: ^dev$
    • Archivo de configuración de Cloud Build: cloudbuild-dev.yaml

Después de configurar los activadores, cualquier cambio en las ramas activa la canalización de Cloud Build correspondiente, que compila y, luego, implementa la aplicación como se especifica en los archivos cloudbuild.yaml.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear los activadores de Cloud Build

Tarea 4: Implementa las primeras versiones de la aplicación

En esta sección, vas a compilar la primera versión de la aplicación de producción y la aplicación de desarrollo.

Compila la primera implementación de desarrollo

  1. En Cloud Shell, inspecciona el archivo cloudbuild-dev.yaml ubicado en el directorio sample-app para ver los pasos del proceso de compilación. En el archivo cloudbuild-dev.yaml, reemplaza <version> en las líneas 9 y 13 por v1.0.

  2. Navega al archivo dev/deployment.yaml y actualiza <todo> en la línea 17 con el nombre de la imagen de contenedor correcto. Además, reemplaza la variable PROJECT_ID por el ID del proyecto real en el nombre de la imagen del contenedor.

Nota: Asegúrate de tener el mismo nombre de imagen de contenedor en dev/deployment.yaml y cloudbuild-dev. .yaml.
  1. Realiza una confirmación con tus cambios en la rama dev y envía los cambios para activar el trabajo de compilación sample-app-dev-deploy.

  2. Verifica que tu compilación se ejecutó correctamente en la página Historial de Cloud Build y comprueba que la aplicación development-deployment se implementó en el espacio de nombres dev del clúster.

  3. Expón la implementación development-deployment a un servicio de LoadBalancer llamado dev-deployment-service en el puerto 8080 y establece el puerto de destino del contenedor en el que está especificado en el Dockerfile.

  4. Navega a la IP del balanceador de cargas del servicio y agrega el punto de entrada /blue al final de la URL para verificar que la aplicación está funcionando. Debería verse de la siguiente manera: http://34.135.97.199:8080/blue.

Compila la primera implementación de producción

  1. Cambia a la rama master. Inspecciona el archivo cloudbuild.yaml ubicado en el directorio sample-app para ver los pasos del proceso de compilación. En el archivo cloudbuild.yaml, reemplaza <version> en las líneas 11 y 16 por v1.0.

  2. Navega al archivo prod/deployment.yaml y actualiza <todo> en la línea 17 con el nombre de imagen de contenedor correcto. Además, reemplaza la variable PROJECT_ID por el ID del proyecto real en el nombre de la imagen del contenedor.

Nota: Asegúrate de tener el mismo nombre de imagen de contenedor en prod/deployment.yaml y cloudbuild.yaml.
  1. Realiza una confirmación con tus cambios en la rama master y envía los cambios para activar el trabajo de compilación sample-app-prod-deploy.

  2. Verifica que tu compilación se ejecutó correctamente en la página Historial de Cloud Build y comprueba que la aplicación production-deployment se implementó en el espacio de nombres prod del clúster.

  3. Expón la implementación production-deployment en el espacio de nombres prod a un servicio de LoadBalancer llamado prod-deployment-service en el puerto 8080 y establece el puerto de destino del contenedor en el que está especificado en el Dockerfile.

  4. Navega a la IP del balanceador de cargas del servicio y agrega el punto de entrada /blue al final de la URL para verificar que la aplicación está funcionando. Debería verse de la siguiente manera: http://34.135.245.19:8080/blue.

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar las primeras versiones de la aplicación

Tarea 5: Implementa las segundas versiones de la aplicación

En esta sección, debes compilar la segunda versión de la aplicación de producción y la aplicación de desarrollo.

Compila la segunda implementación de desarrollo

  1. Vuelve a la rama dev.
Nota: Antes de continuar, asegúrate de encontrarte en la rama dev para crear una implementación del entorno dev.
  1. En el archivo main.go, actualiza la función main() de la siguiente manera:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Agrega la siguiente función dentro del archivo main.go:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Inspecciona el archivo cloudbuild-dev.yaml para ver los pasos en el proceso de compilación. Actualiza la versión de la imagen de Docker a la v2.0.

  2. Navega al archivo dev/deployment.yaml y actualiza el nombre de la imagen de contenedor a la nueva versión (v2.0).

  3. Realiza una confirmación con tus cambios en la rama dev y envía los cambios para activar el trabajo de compilación sample-app-dev-deploy.

  4. Verifica que tu compilación se ejecutó correctamente en la página Historial de Cloud Build y comprueba que la aplicación development-deployment se implementó en el espacio de nombres dev del clúster y que usa la imagen v2.0.

  5. Navega a la IP del balanceador de cargas del servicio y agrega el punto de entrada /red al final de la URL para verificar que la aplicación está funcionando. Debería verse de la siguiente manera: http://34.135.97.199:8080/red.

Nota: Es posible que las actualizaciones tarden unos minutos en propagarse en el balanceador de cargas.

Compila la segunda implementación de producción

  1. Cambia a la rama master.
Nota: Antes de continuar, asegúrate de encontrarte en la rama master para crear una implementación del entorno master.
  1. En el archivo main.go, actualiza la función main() de la siguiente manera:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Agrega la siguiente función dentro del archivo main.go:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Inspecciona el archivo cloudbuild.yaml para ver los pasos en el proceso de compilación. Actualiza la versión de la imagen de Docker a la v2.0.

  2. Navega al archivo prod/deployment.yaml y actualiza el nombre de la imagen de contenedor a la nueva versión (v2.0).

  3. Realiza una confirmación con tus cambios en la rama master y envía los cambios para activar el trabajo de compilación sample-app-prod-deploy.

  4. Verifica que tu compilación se ejecutó correctamente en la página Historial de Cloud Build y comprueba que la aplicación production-deployment se implementó en el espacio de nombres prod del clúster y que usa la imagen v2.0.

  5. Navega a la IP del balanceador de cargas del servicio y agrega el punto de entrada /red al final de la URL para verificar que la aplicación está funcionando. Debería verse de la siguiente manera: http://34.135.245.19:8080/red.

Nota: Es posible que las actualizaciones tarden unos minutos en propagarse en el balanceador de cargas.

Perfecto. Creaste con éxito canalizaciones de CI/CD de producción y desarrollo completamente funcionales.

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar las segundas versiones de la aplicación

Tarea 6: Revierte la implementación de producción

En esta sección, debes revertir la implementación de producción a una versión anterior.

  1. Revierte a production-deployment para usar la versión v1.0 de la aplicación.
Pista: Con el historial de Cloud Build, puedes revertir con facilidad las implementaciones a las versiones anteriores o volver a compilarlas.
  1. Navega a la IP del balanceador de cargas del servicio y agrega el punto de entrada /red al final de la URL de la implementación de producción y la respuesta en la página debe ser 404.

Haz clic en Revisar mi progreso para verificar el objetivo. Revertir la implementación de producción

¡Felicitaciones!

¡Felicitaciones! En este lab, verificaste tus habilidades para implementar flujos de trabajo de DevOps en Google Cloud. Primero, creaste un clúster de GKE para ejecutar tu aplicación y un repositorio de Git que te permite alojar tu base de código. Luego, creaste activadores de Cloud Build, modificaste el código y las plantillas y enviaste actualizaciones al repo que crearon tus primeras compilaciones de aplicación de desarrollo y producción. Después enviaste actualizaciones a la aplicación para crear nuevas compilaciones y revertiste la aplicación de producción a una versión anterior. Ahora, tienes todo listo para comenzar a trabajar con DevOps en tu propio entorno.

Insignia de habilidad de Implement Devops Workflows

Obtén tu próxima insignia de habilidad

Este lab de autoaprendizaje es parte del curso Implement DevOps Workflows in Google Cloud. Si completas este curso, obtendrás la insignia de habilidad que se muestra arriba como reconocimiento de tu logro. Comparte la insignia en tu currículum y tus plataformas sociales, y anuncia tu logro con el hashtag #GoogleCloudBadge.

Esta insignia de habilidad forma parte de la ruta de aprendizaje Cloud DevOps Engineer de Google Cloud. Continúa tu recorrido de aprendizaje inscribiéndote en el curso Monitor and Log with Google Cloud Operations Suite.

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.

Última actualización del manual: 22 de marzo de 2024

Prueba más reciente del lab: 9 de febrero de 2024

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.