Depura una aplicación de Kubernetes en Cloud Code para Cloud Shell

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Cloud Code te permite depurar con facilidad una aplicación implementada en un clúster de Kubernetes mediante skaffold debug.

Puedes depurar tu aplicación en un clúster local (como Minikube o Docker Desktop), Google Kubernetes Engine (GKE) o cualquier otro proveedor de servicios en la nube.

Gracias a la compatibilidad con la depuración en Cloud Code, no es necesario realizar una configuración manual, como configurar la redirección de puertos o insertar argumentos de depuración específicos del lenguaje. La depuración requiere una aplicación de Kubernetes lista para usar en Cloud Code que incluya un archivo de configuración skaffold.yaml y una configuración de inicio cloudcode.kubernetes.

Depurar una aplicación

  1. Haz clic en Barra de estado de Cloud Code Cloud Code en la barra de estado y, luego, en Depurar en Kubernetes.
  2. Si tu aplicación no tiene la configuración necesaria de Skaffold o de lanzamiento cloudcode.kubernetes, Cloud Code te ayuda a configurarlas.
  3. Confirma si deseas usar el contexto de Kubernetes actual para ejecutar la app (o cambia a una preferida).
  4. Si eliges un clúster remoto como contexto, cuando se te solicite, elige un registro de imagen para enviar las imágenes. Si usas Container Registry, puedes navegar a un registro existente o especificar el nombre de un registro que deseas crear. Si tu proyecto tiene la API de Artifact Registry habilitada y al menos un repositorio de Artifact Registry, puedes navegar y seleccionar un repositorio de Artifact Registry existente.

    En los siguientes ejemplos, se muestra cómo especificar dónde se almacenan las imágenes de contenedor para algunos registros comunes:

    Artifact Registry {región}-docker.pkg.dev/{project_id}/{repo-name}
    Container Registry gcr.io/{project_id}
    Docker Hub docker.io/{account}
    Asegúrate de autenticarte de forma correcta si usas un repositorio privado de Docker Hub.

    Para generar el nombre final del repositorio de imágenes, Cloud Code concatena este registro de imágenes con el nombre de la imagen especificado en los manifiestos de Kubernetes. Esta opción se almacena en la configuración de inicio de cloudcode.kubernetes (que se encuentra en .vscode/launch.json).

    Para obtener más información, consulta la guía de manejo del registro de imágenes.

    A continuación, Cloud Code compila los contenedores, los envía al registro, aplica las configuraciones de Kubernetes al clúster y espera el lanzamiento.

    Cuando finaliza el lanzamiento, Cloud Code redirecciona automáticamente todos los puertos de contenedor declarados a tu máquina y muestra las URL en la ventana de resultado para que puedas explorar la aplicación en vivo.

  5. Para cada contenedor depurable de tu aplicación, confirma o ingresa el directorio en el contenedor remoto en el que se encuentra el programa que deseas depurar.

    De manera alternativa, puedes presionar ESC para omitir la depuración del contenedor.

    Solicitud raíz remoto

    Cloud Code adjunta una sesión de depuración para cada contenedor depurable de la aplicación.

    Ahora puedes realizar las mismas tareas que sueles hacer cuando depuras código local, como establecer puntos de interrupción y revisar el código paso a paso, en un clúster activo de Kubernetes.

    De forma predeterminada, cuando un cambio en la aplicación se guarda de forma automática, Cloud Code vuelve a implementar la aplicación y configura una nueva sesión de depuración. Puedes activar o desactivar esta función con la marca watch en la configuración de lanzamiento de tu proyecto.

  6. Usa la barra lateral de depuración para revisar la información sobre las variables y la pila. Usa la consola de depuración ubicada en el depurador del panel inferior si deseas interactuar con la sesión de depuración.

  7. Una vez finalizada la sesión, puedes usar los siguientes comandos del menú contextual:

    • Abrir registros de implementación: abre los registros de la aplicación de una implementación específica con el explorador de registros de Cloud Code.
    • Abrir URL de servicio: abre la URL de servicio de la aplicación de un servicio específico en un navegador web
  8. Si desactivaste el modo de reproducción en la configuración de inicio y quieres realizar cambios en tu aplicación, volver a compilarla y volver a implementarla, en el panel Sesiones de desarrollo, pausa la acción de ejecución y, luego, haz clic en Ícono de vuelve a compilar e implementarVolver a compilar y volver a implementar la aplicación.

  9. Con el objetivo de finalizar la sesión de depuración, haz clic en Ícono de detención de depuración Detener en la barra de herramientas de depuración.

    Después de finalizar la sesión de depuración, todos los recursos de Kubernetes implementados se borran del clúster.

Detalles de configuración

Cloud Code, con la tecnología de Skaffold, controla automáticamente los siguientes detalles de la configuración para todos los idiomas compatibles:

  • Redireccionar el puerto de depuración para poder conectar el depurador
  • Conectar un depurador a uno o más contenedores depurables en tu aplicación. Si tu aplicación tiene varios contenedores depurables (contenedores cuyo lenguaje es compatible con la depuración de Cloud Code) configurada en skaffold.yaml, se adjunta un depurador a cada contenedor depurable.
  • Definiciones de las asignaciones de fuentes persistentes entre sesiones. Puedes personalizar estas definiciones si editas tu archivo .vscode/launch.json directamente.

Cloud Code también controla los siguientes detalles de configuración específicos del lenguaje:

Node.js

Reescribe el punto de entrada que se invocará:

node --inspect=localhost:9229

Python

Instala el módulo ptvsd mediante un contenedor Init y reescribe el punto de entrada que se invocará:

python -m ptvsd --host localhost --port 5678

Go

Instala el depurador dlv mediante un contenedor Init y reescribe el punto de entrada de modo que la sesión de depuración iniciada se ejecute solo con un servidor de depuración (en modo sin interfaz gráfica) continúa el proceso de depuración en el inicio, acepta varias conexiones de clientes y escucha en localhost:56268:

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

Agregar un entorno JAVA_TOOLS_OPTIONS con la configuración apropiada del protocolo de conexión de Java (JDWP) para que el agente de depuración de JDWP escuche una conexión de socket en el puerto 5005 y permita que la VM comience a ejecutarse antes de conectar el depurador:

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

Para obtener más detalles sobre la depuración de la tecnología de Skaffold, consulta la documentación de skaffold debug.

Adjunta el depurador a un Pod de Kubernetes

Cloud Code para VS Code también admite adjuntar un depurador a un pod de Kubernetes. Para obtener una comparación, consulta Comparación entre adjuntar un pod de Kubernetes y depurar una aplicación de Kubernetes.