Déploiement Java sur Kubernetes : guide pratique de base

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi Kubernetes pour un développeur Java ?

Le développement Java moderne dépasse de plus en plus le simple lancement de fichiers JAR sur un serveur. L'architecture microservices, la nécessité de mise à l'échelle horizontale et de tolérance aux pannes conduisent à l'utilisation de conteneurs et d'orchestrateurs. Kubernetes (K8s) est devenu le standard de facto pour la gestion des applications conteneurisées. Dans ce guide, nous allons voir comment déployer une application Java typique (par exemple, sur Spring Boot) dans un cluster Kubernetes. Vous apprendrez à empaqueter l'application dans une image Docker, à créer les manifestes nécessaires et à l'exécuter.



1. Préparation de l'application Java et construction de l'image Docker

Avant d'arriver dans Kubernetes, l'application Java doit être empaquetée dans un conteneur. Prenons un exemple simple avec Spring Boot.



1.1. Exemple d'application Java

Créons un contrôleur REST minimal qui retournera la version de l'application :

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication@RestControllerpublic class App { public static void main(String[] args) { SpringApplication.run(App.class, args); }

@GetMapping("/") public String home() { return "Java App running on Kubernetes v1.0"; }}


1.2. Création du Dockerfile

Pour les applications Java, il est optimal d'utiliser une construction multi-étapes (multi-stage build) afin de réduire la taille de l'image finale :

FROM maven:3.8.6-eclipse-temurin-17 AS builderWORKDIR /appCOPY pom.xml .RUN mvn dependency:go-offline -BCOPY src ./srcRUN mvn package -DskipTests

FROM eclipse-temurin:17-jre-alpineWORKDIR /appCOPY --from=builder /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


1.3. Construction et publication de l'image

Construisez l'image et envoyez-la dans un registre (par exemple, Docker Hub) :

docker build -t yourusername/java-k8s-demo:1.0 .docker push yourusername/java-k8s-demo:1.0


2. Objets Kubernetes principaux pour le déploiement Java

Pour déployer une application Java, vous aurez besoin d'au moins deux ressources : Deployment (gère les répliques et les mises à jour) et Service (assure l'accès réseau).



2.1. Manifeste Deployment

Créez un fichier deployment.yaml :

apiVersion: apps/v1kind: Deploymentmetadata:  name: java-app  labels:    app: java-appspec:  replicas: 2  selector:    matchLabels:      app: java-app  template:    metadata:      labels:        app: java-app    spec:      containers:      - name: java-app        image: yourusername/java-k8s-demo:1.0        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

Important : Pour Spring Boot, utilisez Actuator pour les health checks. Spécifiez requests et limits pour que Kubernetes répartisse correctement les ressources.



2.2. Manifeste Service

Créez service.yaml pour l'accès interne aux pods :

apiVersion: v1kind: Servicemetadata:  name: java-app-servicespec:  selector:    app: java-app  ports:    - protocol: TCP      port                

Blogs

Book Recommendations