Aller au contenu principal

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

  1. Quelle est la différence entre un Deployment et un ReplicaSet?
  2. Comment fonctionne un rolling update?
  3. Pourquoi utiliser un rollback?
  4. Quand utiliser pause/resume?

Prochaines Étapes

Lab 3.4: Configuration des Health Checks
Chapitre 3.8: Health Checks


Lab créé le: Décembre 2024