Si Kubernetes donne du fil à retordre, ce n'est pas parce que le YAML est difficile à taper. C'est parce qu'il existe une chaîne invisible d'objets entre « une requête arrive » et « un conteneur la traite », et que rien de tout cela ne se trouve au même endroit. Un Pod exécute le code, mais on ne dirige jamais le trafic vers un Pod. Un Service lui donne un nom stable, mais un Service ne termine pas le TLS. Un Ingress ou une Gateway gère le monde extérieur, mais transmet à un Service, qui sélectionne des Pods, qui peuvent bouger à tout moment. Ratez un maillon et plus rien ne fonctionne, et le message d'erreur indique rarement lequel.
Un diagramme de cette chaîne vaut plus que n'importe quelle relecture des manifestes. Construisons le modèle mental objet par objet, puis dessinons-le.
Pods : là où le code s'exécute réellement
Un Pod est un ou plusieurs conteneurs planifiés ensemble et partageant une identité réseau. C'est l'unité qui exécute votre processus. Le fait essentiel pour un diagramme : les Pods sont du bétail, pas des animaux de compagnie. Ils sont créés et détruits en permanence, leurs IP changent, et vous ne devriez jamais dépendre de l'un d'eux en particulier. C'est précisément pour cela que tout ce qui se trouve au-dessus existe : offrir quelque chose de stable vers quoi pointer.
Services : un nom stable devant des Pods qui bougent
Un Service est une adresse virtuelle stable et une règle de répartition de charge. Il utilise un sélecteur de labels pour trouver les Pods qui le servent, et répartit le trafic entre ceux qui existent à cet instant. Quand un Pod meurt et qu'un nouveau démarre, le Service se met à jour discrètement ; les appelants ne remarquent rien. Dans votre diagramme, le Service est la boîte à laquelle les autres éléments se connectent, avec une répartition implicite vers un ensemble changeant de Pods derrière lui.
Ingress Kubernetes et Gateway : la porte vers l'extérieur
Un Service seul ne vous expose pas au monde de manière utile. C'est le rôle d'un Ingress ou, dans le modèle plus récent, d'une Gateway. Cette couche gère le routage par hôte et par chemin, la terminaison TLS et les règles qui disent « les requêtes pour cet hôte et ce chemin vont à ce Service ». La Gateway API généralise l'ancien Ingress avec une séparation plus nette des responsabilités (qui possède la gateway et qui possède les routes), mais la forme dans un diagramme reste la même : c'est la boîte en bordure que tout ce qui vient de l'extérieur atteint en premier, et qui transmet aux Services selon des règles.
Dessinez la chaîne une fois et les erreurs commencent à s'expliquer d'elles-mêmes : un sélecteur cassé, une route manquante, un Service qui ne pointe vers rien.
Pourquoi la dessiner vaut mieux que la relire
Quand quelque chose est injoignable, le diagramme devient une checklist. La règle d'Ingress pointe-t-elle vers le bon Service ? Le sélecteur du Service correspond-il aux labels des Pods ? Y a-t-il seulement des Pods ? Chaque maillon de l'image est un point qui peut être faux, et les voir disposés transforme un vague « ça ne marche pas » en un précis « le sélecteur ne correspond pas ». C'est la différence entre déboguer et deviner.
Laissez les manifestes le dessiner
Vous n'avez pas à placer ces boîtes à la main. Vos manifestes encodent déjà toute la chaîne : l'Ingress nomme son Service, le Service porte son sélecteur, le Deployment appose les labels sur ses Pods. Collez le YAML et les relations sont dessinées pour vous, regroupées par namespace, pour que l'image corresponde au cluster et non à vos suppositions à son sujet.
Puis annotez pour les humains
Une fois les objets sur le canevas, faites en sorte que l'image enseigne. Colorez la bordure externe, regroupez par namespace, indiquez où le TLS est terminé et notez quel Service est sous charge. Un nouvel ingénieur devrait pouvoir suivre du doigt une requête depuis internet jusqu'à un conteneur, sans ouvrir un seul fichier YAML. C'est ce diagramme-là qui vaut la peine d'être conservé.
Collez vos manifestes, voyez les pods, services, ingress et gateways se connecter, et gardez enfin en tête tout le chemin de la requête d'un seul coup.