Create the lab resources

Revisar mi progreso

/ 20

Create the Cloud Build Triggers

Revisar mi progreso

/ 20

Deploy the first versions of the application

Revisar mi progreso

/ 20

Deploy the second versions of the application

Revisar mi progreso

/ 20

Roll back the production deployment

Revisar mi progreso

/ 20

Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Este contenido aún no está optimizado para dispositivos móviles.
Para obtener la mejor experiencia, visítanos en una computadora de escritorio con un vínculo que te enviaremos por correo electrónico.

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

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 en Git, Artifact Registry, Docker y Cloud Build será de gran ayuda, ya que en Cymbal Superstore quieren usar los servicios nativos de Google Cloud y las prácticas modernas de DevOps para su canalización.

logotipo de Cymbal Superstore

Antes de iniciar este proyecto, el equipo de DevOps quiere que demuestres tus nuevas habilidades. Como parte de esta demostración, tienen una lista de tareas que les gustaría que completaras 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
  • Inicializar un repositorio de Git en el servidor Git dedicado para alojar el código de la aplicación de Go
  • Crear activadores de Cloud Build que implementen una aplicación de producción y desarrollo
  • Enviar actualizaciones a la app y crear compilaciones nuevas
  • Revertir la aplicación de producción a una versión anterior

En resumen, crearás una canalización de CI/CD simple con un repositorio de Git en un servidor Git dedicado, en Artifact Registry y en Cloud Build.

Tarea 1: Crea los recursos del lab

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

  1. En Cloud Shell, ejecuta el comando siguiente para establecer el ID del proyecto, la región y la IP del servidor de Git:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') export REGION={{{ project_0.default_region }}} export ZONE={{{ project_0.default_zone }}} gcloud config set compute/region $REGION gcloud config set compute/zone $ZONE export GIT_SERVER_IP=$(gcloud compute instances describe git-server --zone=$ZONE --format='get(networkInterfaces[0].accessConfigs[0].natIP)') echo "Git Server IP is: ${GIT_SERVER_IP}"
  1. Ejecuta el comando siguiente para habilitar las APIs de GKE y Cloud Build:
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, configura Git con tu nombre de usuario y correo electrónico:
git config --global user.name "Student" git config --global user.email "student@qwiklabs.net"
  1. Crea un repositorio de Docker en 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 configuración siguiente:

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: Conéctate al repositorio de Git en el servidor Git

En esta tarea, inicializarás el repositorio sample-app en tu servidor de Git dedicado (git-server) y enviarás el código de muestra inicial. Este repositorio aloja el código de la aplicación de Go y es la fuente principal de las compilaciones.

  1. Usa el comando siguiente para copiar el código de muestra en el directorio sample-app:
cd ~ gcloud storage cp -r gs://spls/gsp330/sample-app/* sample-app
  1. Ejecuta el comando siguiente, 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. Inicializa el repositorio de Git en el directorio sample-app, realiza tu primera confirmación con el código de muestra y envía los cambios a la rama master de tu servidor Git:
cd ~/sample-app git init git remote add origin http://${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git git branch -m master git add . && git commit -m "initial commit" git push -u http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git master
  1. 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:
cd ~/sample-app git checkout -b dev git push -u http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git dev
  1. Verifica que almacenaste el código de muestra y las ramas en el repositorio de Git.

El código que acabas de clonar contiene una aplicación simple de Go con dos puntos de entrada: Red y Blue. Cada uno muestra un cuadrado de color simple en la página web, según el punto de entrada que elijas.

Tarea 3: Crea los activadores de Cloud Build

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

  • El primero, llamado sample-app-prod-deploy, compila la imagen del contenedor de tu aplicación con el archivo de configuración cloudbuild.yaml y la implementa en el espacio de nombres prod de tu clúster de GKE.

  • El segundo, llamado sample-app-dev-deploy, compila la imagen del contenedor de tu aplicación con el archivo de configuración cloudbuild-dev.yaml y la implementa en el espacio de nombres dev de tu clúster de GKE.

  1. Crea un activador de Cloud Build llamado sample-app-prod-deploy:
gcloud builds triggers create manual \ --name="sample-app-prod-deploy" \ --inline-config="cloudbuild.yaml" \ --region={{{ project_0.default_region }}}
  1. Crea un activador de Cloud Build llamado sample-app-dev-deploy:
gcloud builds triggers create manual \ --name="sample-app-dev-deploy" \ --inline-config="cloudbuild-dev.yaml" \ --region={{{ project_0.default_region }}}

Después de configurar los activadores, puedes ejecutar la canalización de Cloud Build correspondiente, la cual compila e implementa la aplicación según lo especificado en los archivos cloudbuild.yaml y cloudbuild-dev.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, compilarás 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 que se encuentra 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 hasta el archivo dev/deployment.yaml y actualiza <todo> en la línea 17 con el nombre correcto de la imagen del contenedor. 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 los archivos dev/deployment.yaml y cloudbuild-dev.yaml.
  1. Realiza una confirmación con los cambios que hiciste en la rama dev y envía los cambios al servidor Git:
cd ~/sample-app git checkout dev git add . git commit -m "Deploy v1.0 on dev" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git dev
  1. Ejecuta el trabajo de compilación sample-app-dev-deploy:
cd ~/sample-app gcloud builds submit --config=cloudbuild-dev.yaml .
  1. Corrobora si la compilación se ejecutó con éxito en la página Cloud Build History y si la aplicación development-deployment se implementó en el espacio de nombres dev del clúster.

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

  3. Navega hasta 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 hasta el archivo prod/deployment.yaml y actualiza <todo> en la línea 17 con el nombre correcto de la imagen del contenedor. 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 los cambios que hiciste en la rama master y envíalos al servidor Git:
cd ~/sample-app git checkout master git add . git commit -m "Deploy v1.0 on master" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git master
  1. Ejecuta el trabajo de compilación sample-app-prod-deploy:
cd ~/sample-app gcloud builds submit --config=cloudbuild.yaml .
  1. Corrobora si la compilación se ejecutó con éxito en la página Cloud Build History y si la aplicación production-deployment se implementó en el espacio de nombres prod del clúster.

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

  3. Navega hasta 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, compilarás 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 la implementación del entorno dev.
  1. En el archivo main.go, actualiza la función main() con el código siguiente:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Agrega la función siguiente al 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 del proceso de compilación. Actualiza la versión de la imagen de Docker a la v2.0.

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

  3. Realiza una confirmación con los cambios que hiciste en la rama dev y envía los cambios al servidor Git:

cd ~/sample-app git checkout dev git add . git commit -m "Deploy v2.0 on dev" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git dev
  1. Ejecuta el trabajo de compilación sample-app-dev-deploy:
cd ~/sample-app gcloud builds submit --config=cloudbuild-dev.yaml .
  1. Corrobora si la compilación se ejecutó con éxito en la página Cloud Build History y si la aplicación development-deployment se implementó en el espacio de nombres dev del clúster y usa la imagen v2.0.

  2. Navega hasta 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 la implementación del entorno master.
  1. En el archivo main.go, actualiza la función main() con el código siguiente:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Agrega la función siguiente al 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 del proceso de compilación. Actualiza la versión de la imagen de Docker a la v2.0.

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

  3. Realiza una confirmación con los cambios que hiciste en la rama master y envíalos al servidor Git:

cd ~/sample-app git checkout master git add . git commit -m "Deploy v2.0 on master" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/sample-app.git master
  1. Ejecuta el trabajo de compilación sample-app-prod-deploy:
cd ~/sample-app gcloud builds submit --config=cloudbuild.yaml .
  1. Corrobora si la compilación se ejecutó con éxito en la página Cloud Build History y si la aplicación production-deployment se implementó en el espacio de nombres prod del clúster y usa la imagen v2.0.

  2. Navega hasta 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.

¡Genial! 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, revertirás la implementación de producción a una versión anterior.

  1. Revierte la implementación production-deployment para usar la versión v1.0 de la aplicación.
Sugerencia: Con el historial de Cloud Build, puedes revertir con facilidad las implementaciones a las versiones anteriores o volver a compilarlas.
  1. Navega hasta 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. 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!

¡Bien hecho! 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 en tu servidor Git dedicado con el objetivo de alojar la base de código. Luego, creaste activadores de Cloud Build, modificaste el código y las plantillas, y enviaste actualizaciones al repo, lo que creó las primeras compilaciones de las aplicaciones de desarrollo y de 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 empezar 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 forma 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 Cloud DevOps Engineer de Google Cloud. Para continuar tu recorrido de aprendizaje, inscríbete 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.

Actualización más reciente del manual: 27 de agosto de 2026

Prueba más reciente del lab: 27 de agosto de 2026

Copyright 2026 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

Podemos enviarte una notificación por correo electrónico cuando esté disponible

¡Genial!

Podemos comunicarnos 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

Usar una ventana de incógnito o de navegación privada es la mejor forma de 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.