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.
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.
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
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
Desarrollar en Kubernetes.
El ciclo de desarrollo continuo se inicia en el modo de depuración.
Cloud Code adjunta una sesión de depuración:
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.
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
- Usa la sincronización de archivos y la recarga en caliente para acelerar el desarrollo.
- Configura un entorno de desarrollo continuo en Cloud Code.
- Ver registros de Kubernetes en Cloud Code.