06-Mode déclaratif-Le Manifeste
Retour important
-
De manière impérative : en lançant une commande
kubectl run <conteneur> ...,kubectl expose ... -
De manière déclarative : en décrivant un objet dans un fichier (manifeste) YAML ou JSON et en le passant au client
kubectl apply -f monpod.yml
Définition de l’état souhaité d’un cluster dans Kubernetes
L’état souhaité décrit précisément ce que doit contenir ton cluster : Pods, images, configuration, ressources, règles réseau, etc. Ces informations sont définies dans des manifestes YAML.
Kubernetes compare en continu l’état réel du cluster à cet état déclaré. Dès qu’un écart apparaît, un Pod supprimé, un conteneur qui plante, une configuration modifiée … il rétablit automatiquement la situation par l’état souhaité.
Tout ce qu’on fait en impératif finit par devenir déclaratif …
Kubernetes est entièrement déclaratif, même quand tu utilises des commandes impératives !
Kubernetes fonctionne entièrement en mode déclaratif. K8S maintient en permanence un état désiré et ajuste automatiquement l’état réel du cluster pour qu’il corresponde.
Même lorsque l’utilisateur exécute des commandes impératives, Kubernetes convertit ces actions en objets déclaratifs stockés dans l’API (Pod, Deployment, Service, etc.).
Ces objets deviennent la source de vérité du cluster. Les contrôleurs comparent continuellement l’état réel à cet état désiré et corrigent toute divergence.
Ainsi, l’impératif n’est qu’une interface pratique pour l’utilisateur, tandis que le fonctionnement interne de Kubernetes repose entièrement sur le déclaratif, ce qui garantit résilience, cohérence et automatisation.
Par exemple, après avoir créé un Deployment avec une commande impérative suivante:
kubectl create deployment nginx --image=nginx
on peut générer son manifeste YAML réutilisable :
kubectl get deployment nginx -o yaml > deployment.yaml
Il suffit ensuite de nettoyer les champs internes (status, metadata.uid, managedFields, etc.). Cette approche sert à transformer des actions rapides en manifestes versionnables et réutilisables. On pourrait faire ceci pour toutes les créations de ressource.
Voici le résultat du fichier deployment.yaml (non nettoyé)
Nettoyage pour en faire un manifeste réutilisable
Il faut enlever certaines sections afin d’en faire un modèle réutilisable.
Il faut enlever les blocs ou les éléments :
statusmetadata.creationTimestampmetadata.uidmetadata.resourceVersionmetadata.generationmetadata.managedFieldsspec.template.metadata.creationTimestamp
Ou bien installer et utiliser neat pour nettoyer votre fichier yaml
C’est un plugin officiel de la communauté Kubernetes.
kubectl neat deployment.yaml