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

Procéder au déploiement

  • Créer le pod avec kubectl create et l'option -f pour 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 apply par 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 ?