Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

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.

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

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Ă© L'auteur de cet article et de l'utilitaire lui-mĂȘme est Henning Jacobs de l'entreprise Zalando, qui a justement positionnĂ© la nouveautĂ© en tant que « kubectl pour le web ». Il souhaitait crĂ©er un outil avec des possibilitĂ©s pratiques pour interagir dans un format de support technique (par exemple, montrer rapidement un problĂšme via un lien web) et pour rĂ©agir aux incidents, en recherchant des problĂšmes dans plusieurs clusters simultanĂ©ment. Son invention continue d'Ă©voluer Ă  l'heure actuelle (principalement grĂące Ă  l'auteur lui-mĂȘme). — 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 :

  1. communication avec des collĂšgues dans le cadre du support ;
  2. 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 Twitter:

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

* 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 K8Dash, Kubernator et Octant. 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 ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

K8Dash 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 ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

C'est une description assez précise de Kubernator. 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. »

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

Malheureusement, Kubernetes Dashboard 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 ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

Il y a Kubernetes Operational View 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 grafana-statusmap, dont nous avons parlĂ© en dĂ©tail dans cet article.

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 ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

Rapport de ressources Kubernetes 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 Kubecost, dont nous avons récemment publié la revue.

Octant

« Une plateforme web extensible pour les développeurs, conçue pour offrir une meilleure compréhension de la complexité des clusters Kubernetes ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

Octant, 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 il plantait..

Je présente Kubernetes Web View

« kubectl pour le web ».

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)

AprĂšs avoir analysĂ© les interfaces disponibles pour Kubernetes, j'ai dĂ©cidĂ© de crĂ©er une nouvelle interface : L'auteur de cet article et de l'utilitaire lui-mĂȘme est Henning Jacobs de l'entreprise Zalando, qui a justement positionnĂ© la nouveautĂ© en tant que « kubectl pour le web ». Il souhaitait crĂ©er un outil avec des possibilitĂ©s pratiques pour interagir dans un format de support technique (par exemple, montrer rapidement un problĂšme via un lien web) et pour rĂ©agir aux incidents, en recherchant des problĂšmes dans plusieurs clusters simultanĂ©ment. Son invention continue d'Ă©voluer Ă  l'heure actuelle (principalement grĂące Ă  l'auteur lui-mĂȘme).. 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 kube-ops-view);
  • l'analyse des coĂ»ts (voir kube-resource-report).

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.

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)
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.
  • Les liens externes personnalisables permettent de basculer vers des panneaux de contrĂŽle correspondants et d'autres outils.

Annonce de l'interface web de Kubernetes Web View (et un aperçu des autres UI web pour Kubernetes)
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 de la documentation ou de jeter un Ɠil Ă  la dĂ©mo en direct.

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 sur Twitter!

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 le blog de l'auteur.)

P.S. de la part du traducteur

Lisez aussi dans notre blog :

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster