Despliegue de Java en Kubernetes: guía básica para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Despliegue de Java en Kubernetes: guía básica para principiantes

\n\n

El desarrollo moderno en Java es impensable sin contenerización y orquestación. Kubernetes (K8s) se ha convertido en el estándar de facto para gestionar aplicaciones contenerizadas. En esta guía, analizaremos paso a paso el proceso de despliegue de una aplicación Java simple en un clúster de Kubernetes. Aprenderá cómo empaquetar el código en una imagen Docker, crear los manifiestos necesarios y ejecutar la aplicación en un entorno similar al de producción.

\n\n

1. Preparación de la aplicación Java y la imagen Docker

\n\n

Comencemos con una aplicación Spring Boot simple. Cree un archivo Dockerfile en el directorio raíz del proyecto:

\n\n
FROM openjdk:17-jdk-alpine\nWORKDIR /app\nCOPY target/my-app.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]
\n\n

Construya la imagen y envíela a un registro (por ejemplo, Docker Hub):

\n\n
mvn clean package -DskipTests\ndocker build -t myregistry/my-java-app:v1 .\ndocker push myregistry/my-java-app:v1
\n\n

Asegúrese de que la imagen funcione localmente:

\n\n
docker run -p 8080:8080 myregistry/my-java-app:v1
\n\n

2. Objetos principales de Kubernetes

\n\n

Para desplegar una aplicación Java, necesitaremos tres recursos clave:

\n\n
    \n
  • Deployment — gestiona réplicas y actualizaciones
  • \n
  • Service — proporciona acceso de red a los pods
  • \n
  • Ingress — (opcional) enrutamiento del tráfico externo
  • \n
\n\n

Creación del Deployment (deployment.yaml)

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: java-app-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: java-app\n  template:\n    metadata:\n      labels:\n        app: java-app\n    spec:\n      containers:\n      - name: java-app\n        image: myregistry/my-java-app:v1\n        ports:\n        - containerPort: 8080\n        resources:\n          requests:\n            memory: "256Mi"\n            cpu: "250m"\n          limits:\n            memory: "512Mi"\n            cpu: "500m"\n        livenessProbe:\n          httpGet:\n            path: /actuator/health\n            port: 8080\n          initialDelaySeconds: 30\n          periodSeconds: 10\n        readinessProbe:\n          httpGet:\n            path: /actuator/health\n            port: 8080\n          initialDelaySeconds: 20\n          periodSeconds: 5
\n\n

Creación del Service (service.yaml)

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: java-app-service\nspec:\n  selector:\n    app: java-app\n  ports:\n  - protocol: TCP\n    port: 80\n    targetPort: 8080\n  type: ClusterIP
\n\n

3. Despliegue en el clúster Kubernetes

\n\n

Aplique los manifiestos a su clúster (asegúrese de que kubectl esté configurado):

\n\n
kubectl apply -f deployment.yaml\nkubectl apply -f service.yaml
\n\n

Verifique el estado de los pods y del servicio:

\n\n
kubectl get pods\nkubectl get svc java-app-service
\n\n

Para el acceso externo (por ejemplo, para pruebas), use port-forward:

\n\n
kubectl port-forward service/java-app-service 8080:80
\n\n

Ahora la aplicación está disponible en http://localhost:8080.

\n\n

4. Escalado y actualización

\n\n

Kubernetes permite escalar la aplicación fácilmente:

\n\n
kubectl scale deployment java-app-deployment --replicas=5
\n\n

Para actualizar la imagen (rolling update), cambie la etiqueta en el Deployment y aplíquela:

\n\n
kubectl set image deployment/java-app-deployment java-app=myregistry/my-java-app:v2\nkubectl rollout status deployment/java-app-deployment
\n\n

Si es necesario, revierta los cambios:

\n\n
kubectl rollout undo deployment/java-app-deployment
\n\n

Conclusión

\n\n

Hemos cubierto el proceso básico de despliegue de una aplicación Java en Kubernetes

Blogs

Book Recommendations