Depuración remota con IntelliJ IDEA
1. Depuración remota para aplicaciones Spring Boot en máquinas físicas
1.1 Configuración en IntelliJ IDEA
Acceda a "Edit Configurations", agregue una nueva configuración seleccionando "Remote". La herramienta generará automáticamente los parámetros de conexión JVM después de especificar el host, puerto y versión de JDK. Los parámetros varían según la versión del JDK.
1.2 Inicio de la aplicación
Ejecute el proyecto con los parámetros de depuración remota generados por IDEA.
1.3 Verificación
La depuración remota en entorno físico estará operativa tras completar estos pasos.
2. Depuración remota en contenedores Docker
La configuración en IDEA es idéntica al caso físico. La diferencia principal radica en exponer el puerto de depuración remota JVM al crear el contenedor Docker.
Primero, empaquete la aplicación Spring Boot en un JAR y construya la imagen Docker. El Dockerfile debe exponer el puerto de depuración:
FROM openjdk:11-jre
EXPOSE 8080 5005
COPY app.jar /app.jar
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-jar", "/app.jar"]
Construya la imagen y verifique su creación:
docker build -t debug-app .
docker images | grep debug-app
Inicie el contenedor mapeando el puerto de depuración:
docker run -p 8080:8080 -p 5005:5005 debug-app
Verifique el estado del contenedor y proceda con la depuración como en el entorno físico.
3. Depuración remota en Kubernetes
Este método se basa en la imagen Docker preparada previamente. Requiere exponer el puerto de depuración mediante un Service de tipo NodePort.
3.1 Creación del Pod mediante Deployment
Asegúrese de que la imagen esté disponible en todos los nodos del cluster. Defina el Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: debug-deployment
namespace: development
spec:
replicas: 2
selector:
matchLabels:
app: debug-app
template:
metadata:
labels:
app: debug-app
spec:
containers:
- name: debug-container
image: debug-app:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
- containerPort: 5005
Verifique la creación del Deployment y los Pods.
3.2 Servicios de exposición
Cree un Service para la aplicación:
apiVersion: v1
kind: Service
metadata:
name: app-service
namespace: development
spec:
selector:
app: debug-app
type: NodePort
ports:
- port: 8080
targetPort: 8080
Y otro Service para la depuración remota:
apiVersion: v1
kind: Service
metadata:
name: debug-service
namespace: development
spec:
selector:
app: debug-app
type: NodePort
ports:
- port: 5005
nodePort: 30005
targetPort: 5005
Verifique la creación de ambos servicios. Para acceder a la aplicación, utilice el puerto asignado por el Service de aplicación. Cofnigure IDEA para conectarse al puerto de depuración expuesto (30005 en este ejemplo).