Depuración remota con IntelliJ IDEA en entornos físicos, Docker y Kubernetes

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

Etiquetas: intellij-idea depuración-remota spring-boot Docker Kubernetes

Publicado el 8-20 21:24