Desarrolla con Cloud Code

1. Objetivos

En este lab, aprenderá a hacer lo siguiente:

  • Explora los complementos de Cloud Code
  • Implementar en un clúster de Kubernetes
  • Transmite registros de Kubernetes
  • Utiliza la recarga en caliente de los cambios
  • Depura apps de Kubernetes en vivo

2. Cómo preparar tu espacio de trabajo

Clona la app

Para clonar el repositorio y abrirlo en tu entorno de desarrollo, haz lo siguiente:

  1. Visita la siguiente URL para abrir el editor de Cloud Shell

https://ide.cloud.google.com

  1. En la ventana de la terminal, clona el código fuente de la aplicación con el siguiente comando:

git clone https://github.com/viglesiasce/sample-app.git -b golden-path

  1. Cambia al directorio y configura el espacio de trabajo del IDE en la raíz del repo

cd sample-app && cloudshell workspace .

Inicia Minikube

En esta sección, compilarás, probarás, implementarás y accederás a tu aplicación con una versión local de Kubernetes llamada Minikube.

  1. En la terminal, inicia minikube con el siguiente comando:

minikube start

Minikube configura un clúster local de Kubernetes en Cloud Shell. Esta configuración tardará unos minutos. Mientras se inicia, tómate un momento para revisar las distintas interfaces que proporciona Cloud Code en el siguiente paso.

3. Explora el complemento de Cloud Code

Cloud Code proporciona asistencia para IDE durante todo el ciclo de desarrollo de las aplicaciones de Kubernetes y Cloud Run, desde la creación de una aplicación a partir de una plantilla existente hasta la supervisión de los recursos de apps implementadas. Usarás diferentes comandos y vistas que proporciona Cloud Code. En este paso, te familiarizarás con las interfaces básicas.

Revisa las vistas del Explorador desde la barra de actividades

Se puede acceder a varios paneles de la interfaz de usuario desde la barra de actividades. Para familiarizarte brevemente con las diferentes vistas, haz clic en los íconos de cada una.

Explorador de APIs:

  • Haz clic en el ícono de Cloud Code - Cloud APIs Cloud Code  en la barra de actividades. En la documentación, encontrarás detalles adicionales para trabajar en esta vista.

ded1723c524edd72.png

Explorador de Secret Manager:

  • Haz clic en la vista de Secret Manager  en la barra de actividad. Puedes encontrar detalles adicionales para trabajar en esta vista en la documentación.

89f88159bcf79fa9.png

Cloud Run Explorer:

  • Navega al explorador de Cloud Run con el ícono de Cloud Run en la barra de actividad de la izquierda . En la documentación, encontrarás detalles adicionales para trabajar en esta vista.

a1d583fd06413011.png

Explorador de Kubernetes:

  • Navega al Explorador de Kubernetes con el ícono de la barra de actividades de la izquierda . En la documentación, encontrarás detalles adicionales para trabajar en esta vista.

b2b8ab3975c5b0c9.png

Revisa los comandos de la barra de estado

Se puede acceder rápidamente a los comandos que se usan con frecuencia a través del indicador de la barra de estado.

  • Busca el indicador de la extensión de Cloud Code en la barra de estado d61e85cf23a32a40.png  y haz clic en él.
  • Revisa los distintos comandos disponibles para ejecutar y depurar en Cloud Run y Kubernetes
  • Haz clic en Open Welcome Page para obtener más detalles y actividades de muestra.

Revisa los comandos de la paleta de comandos

Hay comandos adicionales disponibles en la paleta de comandos. Revisa la lista de comandos a los que puedes acceder.

  • Abre la paleta de comandos (presiona Ctrl/Cmd + Mayúsculas + P) y, luego, escribe Cloud Code para filtrar los comandos disponibles.
  • Usa las teclas de flecha para desplazarte por la lista de comandos.

4. Implementación en el clúster de Kubernetes

En esta sección, compilarás, probarás, implementarás y accederás a tu aplicación.

En los siguientes pasos, se inicia una compilación del código fuente y, luego, se ejecutan las pruebas. La compilación y las pruebas tardarán unos minutos en ejecutarse. Estas pruebas incluyen pruebas de unidades y un paso de validación que verifica las reglas establecidas para el entorno de implementación. Este paso de validación ya está configurado y garantiza que recibas advertencias sobre problemas de implementación, incluso mientras sigues trabajando en tu entorno de desarrollo.

  1. En el panel que se encuentra en la parte inferior del editor de Cloud Shell, selecciona Cloud Code  d61e85cf23a32a40.png.
  2. En el panel que aparece en la parte superior, selecciona Run on Kubernetes. Si se te solicita, selecciona Sí para usar el contexto de Kubernetes de minikube.
  3. Selecciona la pestaña Output en el panel inferior 4866761cb9c691e2.png para ver el progreso y las notificaciones.
  4. Selecciona "Kubernetes: Run/Debug - Detailed" en el menú desplegable del canal a la derecha c5e31091d464dbcf.png para ver detalles adicionales y registros que se transmiten en vivo desde los contenedores.

Cuando finalicen la compilación y las pruebas, en la pestaña Output aparecerá el mensaje Resource deployment/sample-app-dev status completed successfully y se mostrarán dos URLs.

  1. En la terminal de Cloud Code, coloca el cursor sobre la primera URL en el resultado (http://localhost:8080) y, luego, en la información sobre herramientas que aparece, selecciona Abrir en la vista previa web.

La versión local de la aplicación se abre en tu navegador. Esta versión de la app se ejecuta en el clúster de Kubernetes de minikube.

  1. En tu navegador, actualiza la página. El número junto a Contador aumenta, lo que muestra que la app responde a tu actualización.

En tu navegador, mantén esta página abierta para que puedas ver la aplicación mientras realizas cualquier cambio en el entorno local.

5. Utiliza la recarga en caliente de los cambios

En esta sección, realizarás un cambio en la aplicación y lo verás a medida que la app se ejecute en el clúster local de Kubernetes. En la pestaña de salida del canal Kubernetes: Run/Debug, además de las URLs de la aplicación, el resultado también dice Watching for changes.. Esto significa que el modo de observación está habilitado. Mientras Cloud Code está en modo de observación, detectará cualquier cambio guardado en tu repo y volverá a compilar y a implementar la app automáticamente con los últimos cambios.

  1. En el Editor de Cloud Shell, ve al archivo main.go.
  2. En este archivo main.go, en la línea 23, cambia el color de verde a azul.
  3. Guarda el archivo.

Cloud Code detecta que se guardó el cambio en la app y lo vuelve a implementar automáticamente. En la pestaña Output, se muestra el mensaje Update initiated. Esta reimplementación tardará unos minutos en ejecutarse.

Esta recompilación automática es similar a la recarga en caliente del código, que es una función disponible para algunos tipos de aplicaciones y frameworks.

  1. Cuando finalice la compilación, ve al navegador en el que tienes abierta la app y actualiza la página.

Cuando actualices la página, el color de la parte superior de la tabla cambiará de azul a verde.

Esta configuración te permite volver a cargar de forma automática cualquier arquitectura, con cualquier componente. Cuando usas Cloud Code y Minikube, todo lo que se ejecuta en Kubernetes tiene esta función de carga nueva de código activo.

6. Depura apps de Kubernetes en vivo

Ejecutaste la aplicación, realizaste un cambio y viste la app en ejecución. En esta sección, depurarás la aplicación para asegurarte de que esté lista para confirmar los cambios en el repo principal.

En este ejemplo de depuración, nos enfocaremos en la sección del código para el contador de páginas.

  1. En el Editor de Cloud Shell, abre el archivo main.go.
  2. Establece un punto de interrupción en la aplicación haciendo clic a la izquierda del número de línea 82 (if err != nil {).
  3. En el panel azul que se encuentra en la parte inferior del editor de Cloud Shell, selecciona Cloud Code d61e85cf23a32a40.png .
  4. En el panel que aparece en la parte superior, selecciona Debug on Kubernetes.

Cloud Code ejecuta y adjunta depuradores para que puedas acceder al estado en memoria de la aplicación, no solo al comportamiento de la aplicación visible para el usuario.

  1. Al final del proceso de implementación, aparecerá un mensaje en la parte superior de la ventana en el que se te pedirá que confirmes el directorio en el contenedor donde se implementó la aplicación. f96e9a814edb44f4.png

Verifica que el valor esté establecido en /go/src/app y presiona Intro para aceptar el valor.

  1. Espera a que finalice la implementación del depurador. Sabrás que se completó cuando la barra de estado se ponga de color naranja y el resultado muestre "Attached debugger to container "sample-app-dev-..." successfully".
  2. En la terminal de Cloud Code, coloca el cursor sobre la primera URL en el resultado (http://localhost:8081) y, luego, en la información sobre herramientas que aparece, selecciona Abrir en la vista previa web. La página no terminará de cargarse, lo cual es normal.
  3. Vuelve al IDE, donde ahora aparece el depurador. Aparecerá el código en la pestaña y verás la pila de llamadas y las variables disponibles en esa parte del código. Puedes expandir Variables - Local para ver aquí el valor actual de la variable del contador.
  4. Para permitir que la página siga cargando, selecciona el ícono "Continuar" en la ventana de depuración. 8f395391c4828528.png
  5. Cuando termines de depurar, haz clic en el botón de detener para finalizar cada uno de los subprocesos en ejecución. 81d142a9e1a2c01b.png