Lab 3.3 - Deployments et Rolling Updates
Objectifs
À la fin de ce lab, vous serez capable de:
- Créer et gérer des Deployments
- Effectuer des rolling updates
- Gérer les rollbacks
- Scaler des Deployments
Exercice 1: Créer un Deployment
Étape 1: Créer le fichier YAML
Créez deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
Étape 2: Appliquer
kubectl apply -f deployment.yaml
Étape 3: Vérifier
# Voir le Deployment
kubectl get deployment
# Voir les ReplicaSets créés
kubectl get replicasets
# Voir les Pods
kubectl get pods -l app=web
Exercice 2: Rolling Update
Étape 1: Mettre à jour l'image
# Mettre à jour vers nginx:1.21
kubectl set image deployment/web-deployment nginx=nginx:1.21
# Observer le processus
kubectl rollout status deployment/web-deployment
Étape 2: Observer les ReplicaSets
# Voir les ReplicaSets
kubectl get replicasets -w
# Dans un autre terminal, voir les Pods
kubectl get pods -l app=web -w
Observation: Un nouveau ReplicaSet est créé, les Pods sont remplacés progressivement.
Exercice 3: Rollback
Étape 1: Voir l'historique
# Historique des rollouts
kubectl rollout history deployment/web-deployment
# Détails d'une révision
kubectl rollout history deployment/web-deployment --revision=2
Étape 2: Effectuer un rollback
# Rollback vers la version précédente
kubectl rollout undo deployment/web-deployment
# Vérifier
kubectl rollout status deployment/web-deployment
Étape 3: Rollback vers une révision spécifique
# Rollback vers la révision 1
kubectl rollout undo deployment/web-deployment --to-revision=1
Exercice 4: Scaling
Étape 1: Scaling manuel
# Augmenter à 5 réplicas
kubectl scale deployment web-deployment --replicas=5
# Vérifier
kubectl get pods -l app=web
Étape 2: Scaling via édition
# Éditer le Deployment
kubectl edit deployment web-deployment
# Modifier replicas: 5 à replicas: 2
# Sauvegarder et quitter
Exercice 5: Pause et Resume
# Pause le rollout
kubectl rollout pause deployment/web-deployment
# Faire des modifications
kubectl set image deployment/web-deployment nginx=nginx:1.22
# Vérifier (rien ne change)
kubectl get pods -l app=web
# Resume le rollout
kubectl rollout resume deployment/web-deployment
# Observer
kubectl rollout status deployment/web-deployment
Nettoyage
kubectl delete deployment web-deployment
Questions de Réflexion
- Quelle est la différence entre un Deployment et un ReplicaSet?
- Comment fonctionne un rolling update?
- Pourquoi utiliser un rollback?
- Quand utiliser pause/resume?
Prochaines Étapes
Lab 3.4: Configuration des Health Checks
Chapitre 3.8: Health Checks
Lab créé le: Décembre 2024