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

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



Kubernetes (K8s) se ha convertido en el estándar de facto para la orquestación de aplicaciones contenerizadas. Si eres desarrollador Java, saber cómo desplegar tus aplicaciones en Kubernetes no es solo una ventaja, sino una necesidad en la cultura DevOps moderna. En esta guía, recorreremos el camino completo desde la creación de una aplicación Java simple hasta su despliegue en un clúster de Kubernetes. Aprenderás cómo empaquetar la aplicación en una imagen Docker, escribir los manifiestos necesarios y ejecutarla en un entorno similar a producción.



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



Antes de desplegar la aplicación en Kubernetes, debe ser contenerizada. Docker es la forma estándar de empaquetar aplicaciones Java con sus dependencias. Consideremos un servicio REST simple con Spring Boot.



Crearemos la clase HelloController.java:



package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;

@RestControllerpublic class HelloController {

@GetMapping("/") public String hello() { return "Hello from Java on Kubernetes!"; }}


Ahora crearemos un Dockerfile para construir la imagen. Usaremos una compilación multi-etapa para minimizar el tamaño de la imagen final:



FROM maven:3.8.5-openjdk-17 AS buildWORKDIR /appCOPY pom.xml .COPY src ./srcRUN mvn clean package -DskipTests

FROM openjdk:17-jdk-slimWORKDIR /appCOPY --from=build /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


Construye la imagen con el comando docker build -t my-java-app:latest . y ejecútala localmente para verificar: docker run -p 8080:8080 my-java-app. Si todo funciona, puedes subir la imagen a un registro (por ejemplo, Docker Hub):



docker tag my-java-app:latest yourusername/my-java-app:latestdocker push yourusername/my-java-app:latest


2. Manifiestos básicos de Kubernetes



Para el despliegue en Kubernetes se necesitan al menos dos recursos: Deployment (responsable de gestionar los pods) y Service (proporciona acceso de red).



Crea el archivo deployment.yaml:



apiVersion: apps/v1kind: Deploymentmetadata:  name: java-app-deployment  labels:    app: java-appspec:  replicas: 2  selector:    matchLabels:      app: java-app  template:    metadata:      labels:        app: java-app    spec:      containers:      - name: java-app        image: yourusername/my-java-app:latest        ports:        - containerPort: 8080        resources:          requests:            memory: "256Mi"            cpu: "250m"          limits:            memory: "512Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 30          periodSeconds: 10        readinessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 20          periodSeconds: 5


Ahora crea service.yaml para hacer la aplicación accesible dentro del clúster:



apiVersion: v1kind: Servicemetadata:  name: java-app-servicespec:  selector:    app: java-app  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: ClusterIP


Si necesitas abrir el acceso desde el exterior (por ejemplo, para pruebas), cambia el tipo a LoadBalancer o usa NodePort.



3. Despliegue en el clúster



Asegúrate de tener acceso al clúster de Kubernetes (por ejemplo, Minikube local o un servicio en la nube). Aplica los manifiestos:



kubectl apply -f deployment.yamlkubectl apply -f service.yaml

Blogs

Book Recommendations