TP 2
Déployer un Deployment Kubernetes pour une application scalable et capable de gérer des mises à jour
Dans ce TP, vous allez convertir un Pod en Deployment, ajouter des fonctionnalités de scalabilité et d’observabilité, et gérer les versions de l’application.
Étapes
Action : Convertir le Pod du TP précédent en Deployment et appliquer le manifeste YAML.
Observation : Le Deployment doit être visible dans la liste des ressources de ce type.Indice
- Utiliser la commande
kubectl get ??? -o yaml
pour obtenir le template du pod dans le TP précédent. - Utiliser la commande
kubectl apply ???
pour appliquer un fichier YAML au cluster. - Utiliser les commande
get
etdescribe
pour afficher l'état.
- Utiliser la commande
Action : Ajouter 2 replicas (3 au total) et un label
app=test
au Deployment, et appliquer les modifications.
Observation : Le Deployment doit intégrer plusieurs replicas et être identifié par des labels spécifiques.Indice
Vérifier les sections replicas et labels dans le manifeste YAML.Action : Ajouter des StartupProbe, LivenessCheck et ReadinessCheck, puis appliquer le manifeste YAML.
Commande pour la sonde Startup :date >> /tmp/startupprobe.txt
Commande pour la sonde Readiness :date >> /tmp/readinessprobe.txt
Commande pour la sonde Liveness :date >> /tmp/livenessprobe.txt
Observation : Quand on édite le deployment il met du temps à être prêt.
Indice
Utiliser des probes dans le YAML pour les checks de liveness et readiness.
Action : Observer les replicasets déployées par un Deployment.
Observation : Les ReplicaSets et les Pods doivent avoir le même préfixe que le déployment.Indice
Inspecter les ressources aveckubectl get ???
.Action : Effectuer un rollout de version en utilisant la version 22.04 de ubuntu
Observation : Le Deployment doit être capable de gérer plusieurs versions d'une application.Indice
Mettre à jour et gérer les versions à l’aide des commandes liées aux déploiements.Action : Effectuer un rollout de version en utilisant la version 22.04 de ubuntu
Observation : Le Deployment doit être capable de gérer plusieurs versions d'une application.Indice
Mettre à jour et gérer les versions à l’aide des commandes liées aux déploiements.
Avancé
- Utiliser la commande
kubectl rollout status
pour observer l’état du déploiement pendant une mise à jour. - Inspecter l’historique des rollouts avec
kubectl rollout history
pour voir les versions précédentes. - Utiliser la commande
kubectl scale
pour ajuster dynamiquement le nombre de réplicas sans modifier le manifeste YAML. - Utiliser
kubectl rollout history --revision=3 ???
pour voir les détails concernant une version du déploiement.
Solution
Afficher
- Convertir le Pod en Deployment et appliquer le manifeste :
kubectl apply -f <nom_du_fichier>.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ubuntu-deployment
spec:
replicas: 1
selector:
matchLabels:
app: ubuntu
template:
metadata:
labels:
app: ubuntu
spec:
containers:
- name: ubuntu
image: ubuntu:latest
command: ["/bin/bash", "-c", "tail -f /dev/null"]
- Ajouter des replicas et labels au Deployment : Modifier le YAML avec la section replicas et labels, puis appliquer.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ubuntu-deployment
spec:
replicas: 3
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: ubuntu
image: ubuntu:latest
command: ["/bin/bash", "-c", "tail -f /dev/null"]
- Ajouter des health checks : Utiliser les probes dans le YAML, puis appliquer avec
kubectl apply
.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ubuntu-deployment
labels:
app: test
spec:
replicas: 3
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: ubuntu-container
image: ubuntu:latest
command: ["/bin/sh", "-c", "tail -f /dev/null"]
readinessProbe:
exec:
command:
- /bin/sh
- -c
- "date >> /tmp/readinessprobe.txt"
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
exec:
command:
- /bin/sh
- -c
- "date >> /tmp/livenessprobe.txt"
initialDelaySeconds: 15
periodSeconds: 10
startupProbe:
exec:
command:
- /bin/sh
- -c
- "date >> /tmp/startupprobe.txt"
failureThreshold: 30
periodSeconds: 10
- Observer les ressources déployées : Utiliser
kubectl get all
pour voir toutes les ressources. - Effectuer un rollout de version : Mettre à jour le fichier YAML en remplaçant
image: ubuntu:22.04
et appliquer le fichier. - Surveiller le rollout de version :
kubectl rollout status deployment/ubuntu-deployment
etkubectl rollout history deployment/ubuntu-deployment
- Effectuer un rollback de version :
kubectl rollout undo deployment/ubuntu-deployment
etkubectl rollout status deployment/ubuntu-deployment