Nous allons créer une première application en écrivant un manifeste de A à Z. Notre application aura les caractéristiques suivantes :
- Déployée sous forme d'un simple pod
- Le pod est constitué d'un seul conteneur
- L'image du conteneur du pod est
k8s.gcr.io/echoserver:1.10, contenant un simple serveur web qui répond les requêtes qu'il reçoit à l'identique - Le pod portera le label
app=echo-server - Le conteneur du pod écoute sur le port 8080
Écrire le manifeste
- Créer un fichier
echoserver-pod.yaml - Écrire le manifeste dans le fichier
- La documentation complète de la structure des manifestes se trouve à cette adresse : https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#pod-v1-core
Procéder au déploiement
- Créer le pod avec
kubectl createet l'option-fpour créer le pod à partir du manifeste - Confirmer la bonne création du pod
kubectl get pods
kubectl describe pod <nom du pod créé>
Suppression, redéploiement idempotent, modification
Différence entre create et apply
- Essayer de recréer le pod en exécutant de nouveau la commande
kubectl create -f - Quel est le résultat ?
- Supprimer le pod, il est possible ici aussi d'utiliser le fichier de manifeste (la suppression peut durer quelques secondes)
kubectl delete -f echoserver-pod.yaml
- Recréer le pod avec la commande
kubectl apply ... - Confirmer la bonne création du pod
- Relancer la commande
kubectl apply ...à l'identique - Quel est le résultat ?
- Modifier le label dans le manifeste et relancer la commande
kubectl apply ... - Quel est le résultat, quelle est la valeur du label (
kubectl describe <nom du pod>) ? - Quel est l'avantage de
kubectl applypar rapport àkubectl create?
Modifications rapides
- Créer le pod si ce n'est pas déjà fait
- Modifier le pod directement depuis kubectl
kubectl edit pod <nom du pod>
Sauvegarde de la configuration
- Supprimer le pod
- Recréer le pod avec
kubectl create - Afficher le détail du pod au format yaml
kubectl get pod <nom du pod> -o yaml
- Le résultat est-il identique au yaml utilisé pour la création ?
- Supprimer le pod
- Recréer le pod en ajoutant l'option
--save-config
kubectl create -f echoserver-pod.yaml --save-config
- Afficher à nouveau le détail du pod au format yaml
- Que contient l'annotation
kubectl.kubernetes.io/last-applied-configuration? - Exécuter
kubectl apply -f echoserver-pod.yaml - Quel est le résultat ?
- Ré-exécuter la même commande avec l'option
--record - Que contient l'annotation
kubernetes.io/change-cause?