arrow_back

Implementa flujos de trabajo de DevOps en Google Cloud: Lab de desafío

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Implementa flujos de trabajo de DevOps en Google Cloud: Lab de desafío

Lab 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermedio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

GSP330

Logotipo de los 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ás utilizar las habilidades aprendidas en los labs del curso para decidir cómo completar las tareas por tu cuenta. Un sistema automatizado de puntuación (en esta página) mostrará comentarios y determinará si completaste tus tareas correctamente.

En un lab de desafío, no se explican conceptos nuevos de Google Cloud, sino que se espera que amplíes las habilidades que adquiriste, 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 Implementa flujos de trabajo de DevOps en Google Cloud. ¿Aceptas el desafío?

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, 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 del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos 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: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.

Requisitos previos

Se requiere una cuenta de GitHub para este lab. Si ya tienes una, puedes usarla. De lo contrario, deberás crear una cuenta de GitHub.

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 GitHub, 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 GitHub 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, crearás una canalización de CI/CD simple con Repositorios de GitHub, 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 repositorios de GitHub:
gcloud services enable container.googleapis.com \ cloudbuild.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. En Cloud Shell, ejecuta los siguientes comandos para configurar Git y GitHub:

    curl -sS https://webi.sh/gh | sh gh auth login gh api user -q ".login" GITHUB_USERNAME=$(gh api user -q ".login") git config --global user.name "${GITHUB_USERNAME}" git config --global user.email "${USER_EMAIL}" echo ${GITHUB_USERNAME} echo ${USER_EMAIL}
    • Presiona INTRO para aceptar las opciones predeterminadas.
    • Lee las instrucciones en el resultado del comando para acceder a GitHub con un navegador web.

    Cuando hayas accedido a tu cuenta correctamente, tu nombre de usuario de GitHub aparecerá en el resultado de Cloud Shell.

  2. Crea un repositorio de Docker de Artifact Registry llamado my-repository en la región para almacenar tus imágenes de contenedor.

  3. 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.29 o más reciente
Escalador automático de 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 Repositorios de GitHub

En esta tarea, crearás un repositorio sample-app en repositorios de GitHub 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 repositorios de GitHub.

  2. Clona el repositorio de GitHub sample-app 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. Crea un repositorio de GitHub con el nombre sample-app.

  2. Después de crear el repositorio, 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.

  3. 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.

  4. Verifica que almacenaste el código de muestra y las ramas en el repositorio de GitHub.

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.

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
    • Fuente:
      • Conecta a un repositorio nuevo y selecciona el proveedor de administración de código fuente: GitHub (app de GitHub de Cloud Build)
      • Elige el repositorio de GitHub: 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
    • Fuente, elige el repositorio de GitHub: 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 Implementa flujos de trabajo de DevOps

Obtén tu próxima insignia de habilidad

Este lab de autoaprendizaje es parte del curso Implementa flujos de trabajo de DevOps en 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 de Ingeniero de Cloud DevOps de Google Cloud. Continúa tu recorrido de aprendizaje inscribiéndote en el curso Supervisa y registra con Google Cloud Observability.

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: 26 de junio de 2024

Prueba más reciente del lab: 26 de junio de 2024

Copyright 2025 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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el 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.