Note de traduction.: L'auteur du contenu original est Henning Jacobs de l'entreprise Zalando. Il a créé une nouvelle interface web pour travailler avec Kubernetes, qui se positionne comme « kubectl pour le web ». Pourquoi ce nouveau projet Open Source a-t-il vu le jour et quels critĂšres ne sont pas satisfaits par les solutions existantes â lisez son article.

Dans cette publication, j'examine diffĂ©rentes interfaces web Kubernetes Ă code source ouvert, expose mes exigences pour une interface utilisateur universelle et raconte pourquoi j'ai dĂ©veloppĂ© â une interface conçue pour faciliter le support et le dĂ©pannage en mĂȘme temps sur plusieurs clusters.
Cas d'utilisation
Chez Zalando, nous servons un grand nombre dâutilisateurs Kubernetes (plus de 900) et de clusters (plus de 100). Il y a quelques cas dâutilisation typiques oĂč un outil web spĂ©cialisĂ© serait trĂšs utile :
- communication avec des collĂšgues dans le cadre du support ;
- rĂ©action aux incidents et enquĂȘte sur leurs causes.
Support
D'aprÚs mon expérience, la communication dans le cadre du support ressemble souvent à ceci :
â Aidez-moi, notre service XYZ est inaccessible !
â Que voyez-vous lorsque vous exĂ©cutez kubectl describe ingress ...?
Ou quelque chose de similaire pour CRD :
â J'ai un problĂšme avec le service d'identificationâŠ
â Que renvoie la commande kubectl describe platformcredentialsset ...?
Cette communication se résume souvent à entrer différentes variations de la commande kubectl afin de diagnostiquer le problÚme. En conséquence, les deux parties de la conversation doivent constamment basculer entre le terminal et le chat web, de plus, elles voient des situations différentes.
C'est pourquoi il serait souhaitable que le frontend web de Kubernetes permette ce qui suit :
- les utilisateurs pourraient Ă©changer des liens et voir la mĂȘme chose ;
- il aiderait à éviter les erreurs humaines dans le support : par exemple, se connecter au mauvais cluster dans la ligne de commande, des fautes de frappe dans les commandes CLI, etc. ;
- il permettrait de générer des présentations personnalisées à envoyer aux collÚgues, c'est-à -dire d'ajouter des colonnes d'étiquettes, d'afficher plusieurs types de ressources sur une seule page ;
- idéalement, cet outil web devrait permettre de mettre en place des liens profonds vers des sections spécifiques de YAML (par exemple, pointer vers un paramÚtre incorrect qui cause des échecs).
Réaction aux incidents et analyse
Réagir à des incidents dans l'infrastructure nécessite une conscience situationnelle, la capacité d'évaluer l'impact et de rechercher des modÚles dans les clusters. Voici quelques exemples de la vie réelle :
- un service de production critique rencontre des problĂšmes et vous devez trouver toutes les ressources Kubernetes par nom dans tous les clusters, pour diagnostiquer le problĂšme ;
- les nĆuds commencent Ă Ă©chouer lors de la montĂ©e en charge, et vous devez trouver tous les podâ de statut « Pending » dans tous les clusters, pour Ă©valuer l'ampleur du problĂšme ;
- des utilisateurs individuels signalent un problÚme avec un DaemonSet déployé dans tous les clusters, et il est nécessaire de déterminer si le problÚme est généralisé.
Ma solution standard dans ces cas est quelque chose comme for i in $clusters; do kubectl ...; done. Il est Ă©vident qu'un outil similaire pourrait ĂȘtre dĂ©veloppĂ©.
Les interfaces Web existantes de Kubernetes
Le monde Open Source des interfaces Web pour Kubernetes n'est pas trÚs vaste*, donc j'ai essayé de rassembler des informations supplémentaires à l'aide de :

* Mon explication du nombre limité d'interfaces Web pour Kubernetes : les services cloud et les fournisseurs de Kubernetes proposent généralement leurs propres frontaux, donc le marché pour de « bonnes » interfaces Kubernetes gratuites est relativement petit.
Avec un tweet, j'ai entendu parler de , et . Examinons-les et d'autres solutions Open Source existantes, essayons de comprendre ce qu'elles représentent.
K8Dash
« K8Dash est le moyen le plus simple de gérer un cluster Kubernetes ».

semble assez bien et fonctionne rapidement, mais présente plusieurs inconvénients pour les scénarios d'utilisation mentionnés ci-dessus :
- Fonctionne uniquement à l'intérieur d'un seul cluster.
- Le tri et le filtrage sont possibles, mais n'ont pas de liens permanents.
- Manque de prise en charge des Custom Resource Definitions (CRDs).
Kubernator
« Kubernator est une interface utilisateur alternative pour Kubernetes. Contrairement au tableau de bord Kubernetes de haut niveau, il offre un contrĂŽle de bas niveau et une excellente vue d'ensemble de tous les objets dans le cluster, avec la possibilitĂ© de crĂ©er de nouveaux objets, de les modifier et de rĂ©soudre les conflits. Ătant entiĂšrement une application cliente (comme kubectl), il ne nĂ©cessite pas de backend Ă l'exception du serveur API Kubernetes lui-mĂȘme, tout en tenant compte des rĂšgles d'accĂšs au cluster ».

C'est une description assez précise . Malheureusement, il lui manque certaines fonctionnalités :
- Ne prend en charge qu'un seul cluster.
- Il n'y a pas de mode d'affichage en liste (c'est-Ă -dire qu'il n'est pas possible d'afficher tous les podâ avec le statut « En attente »).
Kubernetes Dashboard
« Kubernetes Dashboard est une interface web universelle pour les clusters Kubernetes. Elle permet aux utilisateurs de gĂ©rer les applications fonctionnant dans le cluster, de dĂ©panner, ainsi que de gĂ©rer le cluster lui-mĂȘme. »

Malheureusement, cela ne m'aide pas beaucoup dans mes efforts de support et de réponse aux incidents, parce que dans celui-ci :
- il n'y a pas de liens permanents, par exemple, lorsque je filtre des ressources ou change l'ordre de tri ;
- il n'y a pas de moyen simple de filtrer par statut â par exemple, voir tous les podâ avec le statut « En attente » ;
- un seul cluster est pris en charge ;
- les CRD ne sont pas pris en charge (cette fonctionnalité est en cours de développement) ;
- il n'y a pas de colonnes personnalisées (par exemple, des colonnes avec des étiquettes de type
kubectl -L).
Kubernetes Operational View (kube-ops-view)
« Un tableau de bord systÚme pour observer l'espace des clusters K8s ».

Il y a c'est une approche complĂštement diffĂ©rente : cet outil montre uniquement les nĆuds du cluster et les podâ via WebGL, sans aucun dĂ©tail textuel sur les objets. Il est excellent pour une vue opĂ©rationnelle de l'Ă©tat du cluster (« les podâ s'effondrent ? »)*, mais ne convient pas pour les cas d'utilisation dĂ©crits ci-dessus en matiĂšre de support et de rĂ©ponse aux incidents.
* Note de traduction.: Dans ce sens, vous pourriez Ă©galement ĂȘtre intĂ©ressĂ© par notre plugin , dont nous avons parlĂ© en dĂ©tail dans .
Kubernetes Resource Report (kube-resource-report)
« Collectez des informations sur les demandes de ressources des podâ et du cluster Kubernetes, comparez-les avec la consommation des ressources et gĂ©nĂ©rez un HTML statique ».

génÚre des rapports HTML statiques sur l'utilisation des ressources et la répartition des coûts par équipes/applications dans les clusters. Le rapport est en quelque sorte utile pour le support et la réponse aux incidents, car il permet de localiser plus rapidement le cluster dans lequel l'application est déployée.
Note de traduction.: Dans la visualisation des informations sur la répartition des ressources et leurs coûts, un service et un outil chez les fournisseurs de cloud peuvent également s'avérer utiles , dont nous .
Octant
« Une plateforme web extensible pour les développeurs, conçue pour offrir une meilleure compréhension de la complexité des clusters Kubernetes ».

, créé dans VMware, est un nouveau produit que j'ai dĂ©couvert relativement rĂ©cemment. Il permet d'explorer facilement un cluster sur une machine locale (il y a mĂȘme des visualisations), mais il aborde la problĂ©matique du support et de la rĂ©ponse aux incidents seulement de maniĂšre limitĂ©e. InconvĂ©nients d'Octant :
- Pas de recherche dans les clusters.
- Fonctionne uniquement sur une machine locale (ne se déploie pas dans un cluster).
- Impossible de trier/filtrer les objets (seul le sélecteur d'étiquettes est pris en charge).
- Impossible de définir des colonnes personnalisées.
- Impossible d'afficher la liste des objets par espaces de noms.
J'ai également eu des problÚmes de stabilité avec Octant sur les clusters Zalando : sur certains CRD .
Je présente Kubernetes Web View
« kubectl pour le web ».

AprÚs avoir analysé les interfaces disponibles pour Kubernetes, j'ai décidé de créer une nouvelle interface : . En effet, j'ai essentiellement besoin de toute la puissance kubectl sur le web, à savoir :
- la disponibilité de toutes les opérations (en lecture seule), que les utilisateurs préfÚrent effectuer avec kubectl ;
- tous les URL doivent ĂȘtre permanents et reprĂ©senter la page sous sa forme originale, afin que mes collĂšgues puissent les partager et les utiliser dans d'autres outils ;
- prise en charge de tous les objets Kubernetes, ce qui permettra de résoudre n'importe quel type de problÚme ;
- les listes de ressources doivent ĂȘtre tĂ©lĂ©chargeables pour un traitement ultĂ©rieur (dans des tableurs, des outils CLI comme
grep) et pour le stockage (par exemple, pour des postmortems) ; - prise en charge du filtrage des ressources par Ă©tiquettes (similaire Ă
kubectl get .. -l); - possibilitĂ© de crĂ©er des listes combinĂ©es de diffĂ©rents types de ressources (similaire Ă
kubectl get all) pour obtenir une vue d'ensemble opérationnelle parmi les collÚgues (par exemple, lors de la réponse à un incident) ; - possibilité d'ajouter des liens profonds personnalisés « intelligents » vers d'autres outils, tels que des tableaux de bord, des systÚmes de journalisation, des registres d'applications, etc., pour faciliter la recherche/solution des problÚmes et la réponse aux incidents ;
- le frontend doit ĂȘtre aussi simple que possible (HTML pur), afin d'Ă©viter des problĂšmes accidentels, par exemple, un JavaScript gelĂ© ;
- prise en charge de plusieurs clusters pour faciliter l'interaction lors de consultations à distance (par exemple, pour ne mémoriser qu'une seule URL) ;
- l'analyse situationnelle doit ĂȘtre simplifiĂ©e si possible (par exemple, avec des liens pour tĂ©lĂ©charger des ressources Ă travers tous les clusters/espaces de noms) ;
- des fonctionnalités supplémentaires pour générer des liens flexibles et extraire des informations textuelles, par exemple, pour pouvoir indiquer à des collÚgues une section spécifique dans la description d'une ressource (ligne en YAML);
- la possibilité de s'adapter aux exigences d'un client spécifique, par exemple, en permettant de créer des modÚles d'affichage spéciaux pour CRD, des vues de tableau personnalisées, de modifier les styles CSS;
- des outils pour une exploration plus approfondie en ligne de commande (par exemple, montrant des commandes complĂštes
kubectl, prĂȘtes Ă ĂȘtre copiĂ©es);
En dehors des tùches Web View résolues dans Kubernetes (objectifs non atteints) restent :
- l'abstraction des objets Kubernetes;
- la gestion des applications (par exemple, la gestion des déploiements, des chartes Helm, etc.);
- les opĂ©rations d'Ă©criture (doivent ĂȘtre effectuĂ©es via un outil CI/CD sĂ©curisĂ© et/ou GitOps);
- une interface agréable (JavaScript, thÚmes, etc.);
- les visualisations (voir );
- l'analyse des coûts (voir ).
Comment Kubernetes Web View aide-t-il à la gestion et à la réponse aux incidents ?
Support
- Tous les liens sont permanents, ce qui facilite le partage d'informations avec les collĂšgues.
- On peut crĂ©er ses propres vues, par exemple, afficher tous les dĂ©ploiements et pods avec une Ă©tiquette spĂ©cifique dans deux clusters particuliers (plusieurs noms de clusters et types de ressources peuvent ĂȘtre spĂ©cifiĂ©s dans le lien, sĂ©parĂ©s par des virgules).
- On peut faire référence à lignes spécifiques dans le fichier YAML d'un objet, indiquant les problÚmes potentiels dans la spécification de l'objet.

Recherche dans les clusters dans Kubernetes Web View
Réponse aux incidents
- Recherche globale (global search) permet de rechercher des objets dans tous les clusters.
- Les vues sous forme de listes peuvent afficher tous les objets avec un état/colonne spécifique dans tous les clusters (par exemple, nous devons trouver tous les pods avec le statut « En attente »).
- Les listes d'objets peuvent ĂȘtre tĂ©lĂ©chargĂ©es au format de valeurs sĂ©parĂ©es par des tabulations (TSV), pour une analyse ultĂ©rieure.
- permettent de basculer vers des panneaux de contrĂŽle correspondants et d'autres outils.

Kubernetes Web View : liste des pods avec le statut « En attente » dans tous les clusters
Si vous souhaitez essayer Kubernetes Web View, je recommande de consulter ou de jeter un Ćil Ă .
Bien sĂ»r, l'interface pourrait ĂȘtre amĂ©liorĂ©e, mais pour l'instant, Kubernetes Web View est un outil destinĂ© aux « utilisateurs avancĂ©s » qui n'hĂ©sitent pas Ă manipuler manuellement les chemins d'URL si nĂ©cessaire. Si vous avez des commentaires/ajouts/suggestions, veuillez me contacter !
Cet article est un bref rĂ©cit des prĂ©requis qui ont conduit Ă la crĂ©ation de Kubernetes Web View. D'autres suivront ! (Note de traduction.: Ils devraient ĂȘtre attendus dans .)
P.S. de la part du traducteur
Lisez aussi dans notre blog :
- «»;
- «»;
- «»;
- «».
Source : habr.com
