Cloud Code para IntelliJ te permite depurar con facilidad las aplicaciones que implementaste 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, puedes omitir la configuración manual, como la redirección de puertos, la instalación de un backend de depuración o la inserción de argumentos de depuración específicos de lenguajes de manera correcta. Todo lo que necesitas es una aplicación de Kubernetes lista para Cloud Code que incluya un archivo de configuración skaffold.yaml
.
Cloud Code también te permite depurar una aplicación mientras aplicas cambios en el código fuente y, además, iteras en él.
IDE compatibles
En la siguiente tabla, se enumeran los IDE y lenguajes que Cloud Code admite para la depuración. En la tabla, también se enumeran los complementos necesarios, si corresponde:
Lenguaje | Ediciones y IDE compatibles | Complemento requerido |
---|---|---|
Java | IntelliJ IDEA Ultimate | No disponible |
Comunidad de IntelliJ IDEA | No disponible | |
Go | IntelliJ IDEA Ultimate | Complemento de Go |
GoLand | No disponible | |
Node.js | IntelliJ IDEA Ultimate | Complemento de Node.js |
WebStorm | No disponible | |
Python | IntelliJ IDEA Ultimate | Complemento de Python |
PyCharm Professional | No disponible |
Para obtener más información sobre la compatibilidad con el IDE, consulta IDE de JetBrains compatibles.
Con Cloud Code, puedes establecer interrupciones y depurar las aplicaciones remotas que se ejecutan en contenedores para los siguientes lenguajes:
Java
Cloud Code agrega de forma automática una variable de entorno, JAVA_TOOL_OPTIONS
, con la configuración JDWP adecuada para habilitar la depuración. Si JAVA_TOOL_OPTIONS
ya se agregó, Cloud Code usa la configuración existente especificada en JAVA_TOOL_OPTIONS
.
Node.js
Según la estructura de la aplicación y la configuración de compilación de tu imagen, es posible que debas ayudar al depurador a asignar tus fuentes locales a las fuentes remotas del contenedor. Esto permite que el depurador de nodos procese tus interrupciones de forma correcta.
Puedes configurarlo de una de las siguientes maneras:
Configuración manual
Selecciona Run Configuration en Develop on Kubernetes en el menú desplegable y, luego, haz clic en Edit Configurations. En la pestaña Debug, configura la asignación de origen de tu origen de aplicación local a la ubicación de origen en el contenedor remoto.
Opciones de configuración:
- File/directory: Es el archivo local o directorio de la aplicación que se ejecuta en Kubernetes.
- Remote path: Es la ruta de acceso al archivo o directorio que se ejecuta en el contenedor en Kubernetes.
Configuración automática
Puedes optar por diferir este mapeo a Cloud Code. Cuando inicias tu sesión de depuración, Cloud Code intenta inferir esta asignación de forma automática. La asignación inferida se presenta en un cuadro de diálogo, un diálogo por cada artefacto que depures.
Opciones de configuración:
- Local path: es la ruta de acceso local a la raíz del artefacto que se depura.
- Remote path: Es la ruta de acceso al archivo o directorio que se ejecuta en el contenedor en Kubernetes. Puedes anularlo con tu propio valor. Si haces clic en Cancel, no se aplicará ninguna asignación.
Go
A fin de configurar tu aplicación para la depuración, tu aplicación debe ser una aplicación basada en el Módulo de Go y debe identificarse como basada en Go mediante la configuración de una de las variables de entorno de ejecución de Go estándar en el contenedor, como GODEBUG
, GOGC
, GOMAXPROCS
o GOTRACEBACK
. GOTRACEBACK=single
es la configuración predeterminada para Go y GOTRACEBACK=all
es, por lo general, una configuración útil.
De forma opcional (pero recomendada), tu aplicación debe compilarse con las opciones -gcflags='all=-N -l'
para inhabilitar las optimizaciones. SkaffoldPerfiles son una opción útil para este fin y se pueden configurar con el Perfil de implementación en tu configuración de ejecución en la pestaña Build/Deploy.
Python
A fin de configurar tu aplicación para la depuración, asegúrate de cumplir con los siguientes requisitos:
IDE, edición y complemento son compatibles
Para obtener información sobre IDE, ediciones y complementos compatibles, consulta IDE compatibles.
La versión de Skaffold es 1.25.0 o superior
Puedes permitir que Cloud Code administre tus dependencias o apunte a una instalación local de Skaffold. Consulta Preferencias > Herramientas > Cloud Code > Dependencias.
Se configuró el intérprete de Python
Sin un intérprete de Python configurado en tu proyecto, la depuración no funcionará, ya que no hay forma de ejecutar
pydevd
, el depurador subyacente de Python.IDE Cómo configurar IntelliJ IDEA La depuración de Python con Cloud Code requiere que se configure un SDK de Python para tu proyecto.
Ve a File > Project Structure y agrega un SDK de Python en la pestaña Project. Si no existe ninguna, agrega una en la pestaña SDK.PyCharm Ve a File > Settings > Project > Python Interpreter o para Mac OS X, PyCharm > Preferences > Python > Python Interpreter y agrega un intérprete de Python.
Para obtener más información, consulta la documentación de depuración de Skaffold.
Depura una aplicación
Para iniciar el ciclo de desarrollo en el modo de depuración de tu clúster de Kubernetes, haz clic en la acción de depuración de Develop on Kubernetes (Desarrollar en Kubernetes).
El ciclo de desarrollo continuo se inicia en modo de depuración.
Cloud Code adjunta una sesión de depuración:
Ahora puedes realizar las tareas que sueles hacer cuando depuras código local, como establecer interrupciones y revisar el código paso a paso, en un clúster activo de Kubernetes.
Cuando quieras terminar la sesión de depuración, haz clic en el ícono de detener en la configuración de ejecución Develop on Kubernetes.
¿Qué sigue?
- Usa la sincronización de archivos y la recarga en caliente para acelerar el desarrollo.
- Configura un entorno de desarrollo continuo en Cloud Code.
- Consulta los registros de Kubernetes en Cloud Code.