Depurar aplicaciones de Kubernetes con Cloud Code para IntelliJ

Cloud Code para IntelliJ te permite depurar fácilmente tus aplicaciones desplegadas en un clúster de Kubernetes. Puedes depurar una aplicación en un clúster local (como minikube o Docker Desktop), Google Kubernetes Engine o cualquier otro proveedor de servicios en la nube.

Gracias a la compatibilidad con la depuración de Cloud Code, no tendrás que realizar configuraciones manuales, como configurar el reenvío de puertos, instalar un backend de depuración o insertar argumentos de depuración específicos de un lenguaje de la forma correcta. Solo necesitas una aplicación de Kubernetes preparada para Cloud Code que incluya un archivo de configuración skaffold.yaml.

Cloud Code también te permite depurar una aplicación mientras haces cambios en el código fuente y lo iteras.

IDEs compatibles

En la siguiente tabla se indican los idiomas y los IDEs que admite Cloud Code para la depuración. En la tabla también se indican los complementos necesarios, si procede:

Idioma IDEs y ediciones compatibles Complemento obligatorio
Java IntelliJ IDEA Ultimate N/A
Comunidad de IntelliJ IDEA N/A
Go IntelliJ IDEA Ultimate Complemento Go
GoLand N/A
Node.js IntelliJ IDEA Ultimate Plugin de Node.js
WebStorm N/A
Python IntelliJ IDEA Ultimate Complemento de Python
PyCharm Professional N/A

Para obtener más información sobre la compatibilidad con IDEs, consulta IDE de JetBrains compatibles.

Con Cloud Code, puedes definir puntos de interrupción y depurar aplicaciones remotas que se ejecutan en contenedores en los siguientes lenguajes:

Java

Cloud Code añade automáticamente una variable de entorno, JAVA_TOOL_OPTIONS, con la configuración JDWP adecuada para habilitar la depuración. Si JAVA_TOOL_OPTIONS ya está presente, Cloud Code usa los ajustes especificados en JAVA_TOOL_OPTIONS.

Node.js

En función de la estructura de tu aplicación y de la configuración de compilación de su imagen, es posible que tengas que ayudar al depurador a asignar tus fuentes locales a las fuentes remotas del contenedor. De esta forma, el depurador de Node podrá procesar correctamente los puntos de interrupción.

Puede configurar esta opción de una de las siguientes formas:

  • Configuración manual

    Selecciona la configuración de ejecución Develop on Kubernetes (Desarrollar en Kubernetes) en el menú desplegable y, a continuación, haz clic en Edit Configurations (Editar configuraciones). En la pestaña Depuración, configura la asignación de origen desde el origen de tu aplicación local hasta la ubicación de origen del contenedor remoto.

    Elegir una ubicación de origen en la sección de asignación de origen de la pestaña Depuración

    Opciones de configuración:

    • Archivo o directorio: el archivo o directorio local de tu aplicación que se ejecuta en Kubernetes.
    • Ruta remota: la ruta al archivo o directorio que se ejecuta en el contenedor de Kubernetes.
  • Configuración automática

    Puedes aplazar esta asignación a Cloud Code. Cuando inicies la sesión de depuración, Cloud Code intentará inferir esta asignación automáticamente. La asignación inferida se te presenta en un cuadro de diálogo, uno por cada artefacto que estés depurando.

    Cuadro de diálogo de asignación de rutas remotas para cada artefacto que especifica la ruta remota que se está usando

    Opciones de configuración:

    • Ruta local: la ruta local a la raíz del artefacto que estás depurando.
    • Ruta remota: la ruta al archivo o directorio que se ejecuta en el contenedor de Kubernetes. Puedes sustituirlo por el valor que quieras. Si haces clic en Cancelar, no se aplicará ninguna asignación.

Go

Para configurar tu aplicación para la depuración, debe ser una aplicación basada en módulos de Go y debe identificarse como una aplicación basada en Go. Para ello, debes definir una de las variables de entorno de tiempo de ejecución de Go estándar en el contenedor, como GODEBUG, GOGC, GOMAXPROCS o GOTRACEBACK. GOTRACEBACK=single es el ajuste predeterminado de Go y GOTRACEBACK=all es una configuración que suele ser útil.

De forma opcional (aunque recomendable), tu aplicación debe compilarse con las opciones -gcflags='all=-N -l' para inhabilitar las optimizaciones. Los perfiles de Skaffold son una opción útil para este propósito y se pueden definir con el campo Perfil de implementación de la configuración de ejecución en la pestaña Compilación/Implementación.

Python

Para configurar tu aplicación para depuración, asegúrate de que cumples los siguientes requisitos previos:

  • El IDE, la edición y el complemento son compatibles

    Para ver los IDEs, las ediciones y los complementos compatibles, consulta IDE compatibles.

  • La versión de Skaffold es 1.25.0 o posterior

    Puedes permitir que Cloud Code gestione tus dependencias o apuntar a una instalación local de Skaffold. Consulta Preferencias > Herramientas > Cloud Code > Dependencias.

  • El intérprete de Python está configurado

    Si no hay ningún intérprete de Python configurado en tu proyecto, la depuración no funcionará, ya que no habrá forma de ejecutar pydevd, el depurador de Python subyacente.

    IDE Cómo se configura
    IntelliJ IDEA Para depurar Python con Cloud Code, debes configurar un SDK de Python en tu proyecto.

    Ve a Archivo > Estructura del proyecto y añade un SDK de Python en la pestaña Proyecto. Si no hay ninguno, añada uno en la pestaña SDK.
    PyCharm Ve a Archivo > Configuración > Proyecto > Intérprete de Python o en Mac OS X, PyCharm > Preferencias > Proyecto > Intérprete de Python, y añade un intérprete de Python.

Para obtener más información, consulta la documentación de depuración de Skaffold.

Depurar una aplicación

  1. Para iniciar el ciclo de desarrollo en modo de depuración en tu clúster de Kubernetes, haz clic en la acción de depuración de Icono de acción de ejecución Desarrollar en Kubernetes.

    Iniciar el ciclo de desarrollo del clúster de Kubernetes en modo de depuración

    El ciclo de desarrollo continuo se inicia en el modo de depuración.

    Cloud Code adjunta una sesión de depuración:

    Depurador de Kubernetes conectado

  2. Ahora puedes realizar las tareas que haces normalmente al depurar código local, como definir puntos de interrupción y recorrer el código paso a paso, en un clúster de Kubernetes activo.

    Sesión del depurador de Kubernetes

  3. Para finalizar la sesión de depuración, haz clic en el icono de detener de la configuración de ejecución Desarrollar en Kubernetes.

Siguientes pasos

Obtener asistencia

Para enviar comentarios o informar de un problema en tu IDE de IntelliJ, ve a Herramientas > Cloud Code > Ayuda o información > Enviar comentarios o informar de un problema para informar de un problema en GitHub.