Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Depura una aplicación de Kubernetes

Con Cloud Code, puedes depurar fácilmente tu aplicación implementada en un clúster de Kubernetes si aprovechas skaffold debug. Puedes depurar tu aplicación en un clúster local (como Minikube o Docker Desktop), Google Kubernetes Engine o cualquier otro proveedor de servicios en la nube.

Además, gracias a la compatibilidad con la depuración de Cloud Code, no tienes que preocuparte por ninguna configuración manual, como la redirección de puertos o la incorporación de argumentos de depuración específicos del lenguaje. Solo debes tener una aplicación de Kubernetes lista para usar con Cloud Code que incluya un archivo de configuración skaffold.yaml y una configuración de lanzamiento cloudcode.kubernetes.

Depura una aplicación

  1. Elige el comando Debug on Kubernetes (Depurar en Kubernetes) mediante la barra de estado de Cloud Code.
  2. Si tu aplicación no tiene la configuración de Skaffold necesaria o la configuración de inicio de cloudcode.kubernetes, Cloud Code te ayudará a configurarlos.
  3. Confirma si deseas usar el contexto de Kubernetes actual para ejecutar la app (o cambiar a uno preferido).
  4. Si el contexto elegido es de un clúster remoto, se te pedirá que proporciones un registro de imágenes para enviar las imágenes.

    A continuación, se muestran ejemplos de cómo especificar dónde se almacenan las imágenes de contenedor para algunos registros comunes:

    Docker Hub docker.io/{account}
    Asegúrate de estar autenticado correctamente si usas un repositorio privado de Docker Hub.
    Google Container Repository (GCR) gcr.io/{project_id}

    Cloud Code concatena este registro de imágenes con el nombre de imagen especificado en los manifiestos de Kubernetes para generar el nombre final del repositorio de imágenes.

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

    Esta opción se almacena en tu configuración de inicio cloudcode.kubernetes (que se encuentra en .vscode/launch.json).

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

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

    Redirecciona los puertos y muestra las URL en la ventana de resultados

  7. Por cada contenedor depurable en tu aplicación, se te solicitará que confirmes o ingreses el directorio en el contenedor remoto donde se encuentra el programa que deseas depurar.

    De forma alternativa, puede presionar ESC para omitir la depuración del contenedor.

    Solicitud raíz remoto

    Cloud Code adjuntará una sesión de depuración para cada contenedor depurable en la aplicación.

    Ahora puedes realizar todas las tareas que sueles hacer cuando depuras código local, como establecer interrupciones y revisar el código paso a paso, pero con la ventaja adicional de poder depurar con un clúster activo de Kubernetes:

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

    App detenida en la interrupción, variables y secciones de pila de llamadas propagadas con valores dentro del permiso

  9. Una vez que se complete la sesión, habrá opciones adicionales de menú contextual para supervisar tu aplicación y sus recursos a través de la barra de estado de Cloud Code, incluidos los siguientes:

    • Abrir registros de implementación: abre los registros de la aplicación de una implementación específica con el visor de registros de Cloud Code.
    • URL de servicio abierto: Abre la URL de servicio de la aplicación de un servicio específico en un navegador web.
    • Activar o desactivar el modo de reloj: activa o desactiva el modo de reloj para la sesión actual (no disponible para las sesiones de depuración).

      Opciones disponibles a través de la barra de estado de Cloud Code: Abrir registros de implementación, URL de servicio abierto y activar el modo de supervisión, además de acciones normales de Cloud Code

  10. Con el objetivo de finalizar la sesión de depuración, haz clic en el ícono para detener en la barra de herramientas de depuración.

    Cuando finalice la aplicación, todos los recursos implementados de Kubernetes se borrarán del clúster.

Detalles de configuración

Cloud Code, con tecnología de Skaffold, de forma interna, se encargará automáticamente de los siguientes detalles de configuración:

  • 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 (los contenedores cuyo lenguaje es compatible con la depuración de Cloud Code) configurados en skaffold.yaml, se conectará un depurador a cada uno de ellos.
  • Conserva las definiciones de asignación de origen en las sesiones. Para personalizar estas definiciones, edita directamente tu .vscode/launch.json.

Además de lo anterior, según el lenguaje, Cloud Code también se encargará de siguiente:

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

Agrega un entorno JAVA_TOOLS_OPTIONS con la configuración JDWP correspondiente, de manera que el agente de depuración de JDWP detecte la conexión de un socket en el puerto 5005 y permita que la VM comience a ejecutarse antes de que se conecte el depurador:

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

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

Adjunta el depurador a un Pod de Kubernetes

Cloud Code también admite adjuntar un depurador a un pod de Kubernetes. Para conocer las diferencias, consulta esta tabla.