Déploiement Java sur Kubernetes : guide de base pour développeurs

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

Déploiement Java sur Kubernetes : guide de base



Kubernetes (K8s) est devenu le standard de facto pour l'orchestration d'applications conteneurisées. Si vous êtes développeur Java, savoir déployer vos applications sur Kubernetes n'est pas seulement un atout, mais une nécessité dans la culture DevOps moderne. Dans ce guide, nous allons parcourir le chemin complet, de la création d'une simple application Java à son déploiement dans un cluster Kubernetes. Vous apprendrez comment empaqueter l'application dans une image Docker, écrire les manifestes nécessaires et l'exécuter dans un environnement de type production.



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



Avant de déployer une application sur Kubernetes, il faut la conteneuriser. Docker est le moyen standard d'empaqueter les applications Java avec leurs dépendances. Considérons un simple service REST avec Spring Boot.



Créons la classe 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!"; }}


Créons maintenant un Dockerfile pour construire l'image. Utilisons une construction multi-stage pour minimiser la taille de l'image finale :



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"]


Construisez l'image avec la commande docker build -t my-java-app:latest . et exécutez-la localement pour vérifier : docker run -p 8080:8080 my-java-app. Si tout fonctionne, vous pouvez charger l'image dans un registre (par exemple, Docker Hub) :



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


2. Manifestes Kubernetes de base



Pour le déploiement sur Kubernetes, vous aurez besoin d'au moins deux ressources : un Deployment (responsable de la gestion des pods) et un Service (assure l'accès réseau).



Créez le fichier 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


Créez maintenant service.yaml pour rendre l'application accessible à l'intérieur du cluster :



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


Si vous devez ouvrir l'accès depuis l'extérieur (par exemple, pour les tests), changez le type en LoadBalancer ou utilisez NodePort.



3. Déploiement dans le cluster



Assurez-vous d'avoir accès à un cluster Kubernetes (par exemple, Minikube local ou un service cloud). Appliquez les manifestes :



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

Blogs

Book Recommendations