Kubernetes
Deployer une application sur Kubernetes - tutoriel
18 min de lecturePublié le 2026-03-10Spectra Consulting
Ce tutoriel vous guide pour déployer une application complète sur Kubernetes en 20 minutes. Pas de théorie abstraite : vous allez créer un Deployment, un Service et un Ingress, puis tester le tout.
Prérequis
- Un cluster Kubernetes fonctionnel (ou un lab LabsDevOps)
- Connaissances de base en Docker
kubectlinstallé et configuré
Étape 1 : Créer le Deployment
Un Deployment gère le cycle de vie de vos Pods. Créez un fichier app-deployment.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: mon-app
labels:
app: mon-app
spec:
replicas: 3
selector:
matchLabels:
app: mon-app
template:
metadata:
labels:
app: mon-app
spec:
containers:
- name: app
image: nginx:alpine
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "250m"# Appliquer
kubectl apply -f app-deployment.yaml
# Vérifier — 3 pods doivent apparaître
kubectl get pods -l app=mon-app
# NAME READY STATUS RESTARTS AGE
# mon-app-7d4b8c6f9-abc12 1/1 Running 0 10s
# mon-app-7d4b8c6f9-def34 1/1 Running 0 10s
# mon-app-7d4b8c6f9-ghi56 1/1 Running 0 10sÉtape 2 : Exposer avec un Service
Le Service donne une IP stable à vos Pods. Créez app-service.yaml :
apiVersion: v1
kind: Service
metadata:
name: mon-app-service
spec:
selector:
app: mon-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIPkubectl apply -f app-service.yaml
kubectl get svc mon-app-service
# NAME TYPE CLUSTER-IP PORT(S)
# mon-app-service ClusterIP 10.96.234.56 80/TCPÉtape 3 : Configurer l'Ingress
L'Ingress route le trafic externe vers votre Service :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mon-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: mon-app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mon-app-service
port:
number: 80Étape 4 : Mise à jour sans interruption
Changez l'image et K8s fait un rolling update automatique :
# Mettre à jour l'image
kubectl set image deployment/mon-app app=nginx:1.25
# Suivre le déploiement en direct
kubectl rollout status deployment/mon-app
# En cas de problème, rollback instantané
kubectl rollout undo deployment/mon-appÉtape 5 : Scaling
# Manuel
kubectl scale deployment/mon-app --replicas=5
# Automatique (HPA)
kubectl autoscale deployment/mon-app --min=2 --max=10 --cpu-percent=70
# Vérifier
kubectl get hpaCommandes de debug essentielles
# Logs d'un pod
kubectl logs -f deployment/mon-app
# Shell dans un pod
kubectl exec -it deployment/mon-app -- /bin/sh
# Événements du cluster
kubectl get events --sort-by='.lastTimestamp'
# Décrire une ressource (diagnostic)
kubectl describe pod mon-app-7d4b8c6f9-abc12Erreurs fréquentes des débutants
- ImagePullBackOff — l'image Docker n'existe pas ou le registry est privé sans credentials
- CrashLoopBackOff — le conteneur crashe au démarrage (vérifiez les logs)
- Pending — pas assez de ressources sur le cluster
- 0/3 ready — le readinessProbe échoue (vérifiez le endpoint /health)
🚀 Faites ce tutoriel sur un vrai cluster
Nos labs Kubernetes vous donnent un cluster k3s dédié. Déployez, scalez et débuggez pour de vrai.
Commencer gratuitement →Passez à la pratique
Cet article vous a donné les bases. Maintenant, pratiquez chaque commande sur un vrai terminal avec nos labs interactifs guidés.
Commencer les labs Kubernetes