Déployer une application sur Kubernetes, le système d’orchestration de conteneurs incontournable, permet de gérer efficacement la scalabilité, la haute disponibilité et la résilience des applications modernes. En 2025, maîtriser le déploiement sur Kubernetes est essential pour toute équipe DevOps ou développeurs souhaitant tirer parti du cloud natif. Cet article vous guide étape par étape sur la manière de déployer une application sur Kubernetes.

Comprendre le rôle d’un déploiement Kubernetes

Un déploiement Kubernetes définit l’état souhaité pour une application : quel conteneur exécuter, combien d’instances (pods) doivent tourner, comment gérer les mises à jour, etc. Kubernetes s’occupe ensuite de faire correspondre l’état réel à cet état désiré, qu’il s’agisse de créer, supprimer ou mettre à jour des instances.

Ce mécanisme permet notamment :

  • Le scaling automatique en fonction de la charge.

  • Les rolling updates pour déployer des mises à jour sans interruption.

  • La gestion des pannes par le redémarrage automatique des pods.

Étape 1 : préparer le fichier de configuration YAML

Le déploiement se fait via un fichier YAML qui décrit l’application à exécuter dans le cluster.

Voici un exemple simple pour déployer l’image Nginx avec 3 replicas :

text
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80

Ce fichier indique à Kubernetes de créer 3 pods basés sur l’image nginx, avec un port exposé sur le 80. En savoir plus sur ce sujet en visitant cette page.

Étape 2 : appliquer et vérifier le déploiement

Pour appliquer la configuration, utilisez la commande :
kubectl apply -f nginx-deployment.yaml

Kubernetes va alors créer le déploiement et les pods associés. Vous pouvez vérifier l’état avec :
kubectl get deployments
kubectl get pods

Ces commandes affichent le nombre de pods en cours d’exécution et leur statut.

Étape 3 : exposer l’application avec un service

Un service Kubernetes expose votre application à l’extérieur ou rend le pod accessible au sein du cluster.

Exemple simple d’un service de type LoadBalancer pour exposer Nginx :

text
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80

Appliquez-le avec kubectl apply -f nginx-service.yaml.

Le service attribue une IP publique (dans un cloud) ou une IP interne selon l’environnement, permettant d’accéder à l’application.

Étape 4 : gérer la mise à l’échelle

Pour ajuster la charge, Kubernetes permet de modifier dynamiquement le nombre de replicas.

Commandes utiles :

  • Pour augmenter/diminuer le nombre de pods :
    kubectl scale deployment nginx-deployment --replicas=5

  • Pour activer le scaling automatique basé sur l’utilisation des ressources (CPU/mémoire), configurez un Horizontal Pod Autoscaler (HPA).

Étape 5 : réaliser des mises à jour continues

Kubernetes supporte les rolling updates qui permettent de mettre à jour l’application sans interruption de service.

  • Modifiez l’image dans votre fichier YAML (exemple : nginx:1.21 -> nginx:1.22).

  • Appliquez la modification avec kubectl apply -f nginx-deployment.yaml.

  • Kubernetes met à jour les pods un par un, maintenant la disponibilité.

Vous pouvez aussi revenir rapidement à une version précédente en cas de problème.

Conseils avancés pour un déploiement réussi

  • Utilisez des namespaces pour isoler les environnements (dev, test, prod).

  • Intégrez l’Infrastructure as Code (IaC) pour versionner vos configurations.

  • Surveillez les déploiements avec des outils comme Prometheus et configurez des alertes.

  • Automatiser le déploiement via des pipelines CI/CD pour plus d’efficacité.

  • Sécurisez les accès avec des Role-Based Access Control (RBAC).

Déployer une application sur Kubernetes en 2025 est un processus structuré qui combine déclarations dans des fichiers YAML, commandes kubectl pour appliquer et gérer, et bonnes pratiques d’automatisation et de sécurité. Cette maîtrise permet d’assurer la scalabilité, la disponibilité et la simplicité des mises à jour sans interruption de vos applications.