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

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 pour débutants

\n\n

Le développement Java moderne est impensable sans conteneurisation et orchestration. Kubernetes (K8s) est devenu le standard de facto pour la gestion des applications conteneurisées. Dans ce guide, nous allons étape par étape décomposer le processus de déploiement d'une application Java simple sur un cluster Kubernetes. Vous apprendrez à empaqueter le code dans une image Docker, à créer les manifestes nécessaires et à exécuter l'application dans un environnement de type production.

\n\n

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

\n\n

Commençons par une application Spring Boot simple. Créez un fichier Dockerfile dans le répertoire racine du projet :

\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

Construisez l'image et envoyez-la dans un registre (par exemple, 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

Assurez-vous que l'image fonctionne localement :

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

2. Objets Kubernetes principaux

\n\n

Pour déployer une application Java, nous aurons besoin de trois ressources clés :

\n\n
    \n
  • Deployment — gère les réplicas et les mises à jour
  • \n
  • Service — assure l'accès réseau aux pods
  • \n
  • Ingress — (optionnel) routage du trafic externe
  • \n
\n\n

Création du 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

Création du 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. Déploiement sur le cluster Kubernetes

\n\n

Appliquez les manifestes à votre cluster (assurez-vous que kubectl est configuré) :

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

Vérifiez le statut des pods et du service :

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

Pour un accès externe (par exemple, pour les tests), utilisez port-forward :

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

Maintenant, l'application est accessible à l'adresse http://localhost:8080.

\n\n

4. Mise à l'échelle et mise à jour

\n\n

Kubernetes permet de mettre facilement à l'échelle l'application :

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

Pour mettre à jour l'image (rolling update), modifiez le tag dans le Deployment et appliquez :

\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 nécessaire, annulez les modifications :

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

Conclusion

\n\n

Nous avons examiné le processus de base de déploiement d'une application Java sur Kubernetes

Blogs

Book Recommendations