Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Noter. trad.: L'auteur du matériel original est Henning Jacobs de Zalando. Il a créé une nouvelle interface Web pour travailler avec Kubernetes, qui se positionne comme « kubectl pour le Web ». Pourquoi un nouveau projet Open Source est apparu et quels critères n'ont pas été remplis par les solutions existantes - lisez son article.

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Dans cet article, je passe en revue les différentes interfaces Web Kubernetes open source, expose mes exigences en matière d'interface utilisateur universelle et explique pourquoi j'ai développé Vue Web Kubernetes — une interface conçue pour faciliter la prise en charge et le dépannage de plusieurs clusters à la fois.

Cas d'utilisation

Chez Zalando, nous servons un grand nombre d'utilisateurs Kubernetes (900+) et de clusters (100+). Il existe quelques cas d'utilisation courants qui bénéficieraient d'un outil Web dédié :

  1. communication avec des collègues pour obtenir du soutien ;
  2. réagir aux incidents et enquêter sur leurs causes.

support

D'après mon expérience, les communications d'assistance ressemblent souvent à ceci :

— Au secours, notre service XYZ est indisponible !
— Que voyez-vous lorsque vous jouez kubectl describe ingress ...?

Ou quelque chose de similaire pour CRD :

— J'ai un problème avec le service d'identification...
— Que produit la commande ? kubectl describe platformcredentialsset ...?

Une telle communication se résume généralement à la saisie de diverses variantes de la commande kubectl afin d'identifier le problème. En conséquence, les deux parties à la conversation sont obligées de basculer constamment entre le terminal et le chat Web, et elles observent également une situation différente.

Par conséquent, j'aimerais que l'interface Web Kubernetes autorise les opérations suivantes :

  • les utilisateurs pourraient échanger des liens et observez la même chose ;
  • aiderait éviter les erreurs humaines en support : par exemple, connexion au mauvais cluster sur la ligne de commande, fautes de frappe dans les commandes CLI, etc. ;
  • permettrait générer vos propres vues envoyer à des collègues, c'est-à-dire ajouter des colonnes de balises, afficher de nombreux types de ressources sur une seule page ;
  • Idéalement, cet outil web devrait vous permettre de définir liens « profonds » vers des sections spécifiques de YAML (par exemple, signaler un paramètre incorrect qui provoque des échecs).

Réponse et analyse des incidents

Répondre aux incidents d’infrastructure nécessite une connaissance de la situation, la capacité d’évaluer l’impact et de rechercher des tendances dans les clusters. Quelques exemples concrets :

  • Un service de production critique rencontre des problèmes et vous devez trouver toutes les ressources Kubernetes par nom dans tous les clusterspour dépanner ;
  • les nœuds commencent à tomber lors de la mise à l'échelle et vous avez besoin trouver tous les pods avec le statut « En attente » dans tous les clustersévaluer l'ampleur du problème;
  • des utilisateurs individuels signalent un problème avec DaemonSet déployé sur tous les clusters et doivent le comprendre Le problème est-il total ?.

Ma solution standard dans de tels cas est quelque chose comme for i in $clusters; do kubectl ...; done. Il est évidemment possible de développer un outil offrant des fonctionnalités similaires.

Interfaces Web Kubernetes existantes

Le monde open source des interfaces Web pour Kubernetes n'est pas très vaste*, j'ai donc essayé de rassembler plus d'informations en utilisant Twitter:

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

*Mon explication sur le nombre limité d'interfaces Web pour Kubernetes : les services cloud et les fournisseurs de Kubernetes proposent généralement leurs propres interfaces, de sorte que le marché de la « bonne » interface utilisateur Kubernetes gratuite est relativement restreint.

Grâce à un tweet, j'ai appris l'existence K8Dash, Kubernateur и Octante. Examinons-les ainsi que d'autres solutions Open Source existantes, essayons de comprendre de quoi il s'agit.

K8Dash

"K8Dash est le moyen le plus simple de gérer un cluster Kubernetes."

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

K8Dash Cela a l'air bien et semble rapide, mais présente un certain nombre d'inconvénients pour les cas d'utilisation répertoriés ci-dessus :

  • Fonctionne uniquement dans les limites d'un cluster.
  • Le tri et le filtrage sont possibles, mais ne comportent pas de permaliens.
  • Les définitions de ressources personnalisées (CRD) ne sont pas prises en charge.

Kubernateur

« Kubernator est une interface utilisateur alternative à Kubernetes. Contrairement au tableau de bord Kubernetes de haut niveau, il offre un contrôle de bas niveau et une excellente visibilité sur tous les objets du cluster avec la possibilité d'en créer de nouveaux, de les modifier et de résoudre les conflits. Étant une application entièrement côté client (comme kubectl), elle ne nécessite aucun backend autre que le serveur API Kubernetes lui-même et respecte également les règles d'accès au cluster.

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

C'est une description assez précise Kubernateur. Malheureusement, il lui manque certaines fonctionnalités :

  • Ne sert qu'un seul cluster.
  • Il n'existe pas de mode d'affichage de liste (c'est-à-dire que vous ne pouvez pas afficher tous les pods avec le statut « En attente »).

Tableau de bord Kubernetes

« Kubernetes Dashboard est une interface Web universelle pour les clusters Kubernetes. Il permet aux utilisateurs de gérer et de dépanner les applications exécutées dans un cluster, ainsi que de gérer le cluster lui-même.

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Malheureusement, Tableau de bord Kubernetes ne m'aide pas vraiment dans mes activités de support et de réponse aux incidents car cela :

  • il n'y a pas de liens permanents, par exemple lorsque je filtre des ressources ou modifie l'ordre de tri ;
  • il n'existe pas de moyen simple de filtrer par statut - par exemple, voir tous les pods 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) ;
  • pas de colonnes personnalisées (telles que les colonnes étiquetées par type) kubectl -L).

Vue opérationnelle de Kubernetes (kube-ops-view)

«Observateur du tableau de bord système pour l'espace de cluster K8s».

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

У Vue opérationnelle de Kubernetes Une approche complètement différente : cet outil affiche uniquement les nœuds et les pods du cluster utilisant WebGL, sans aucun détail textuel sur les objets. C'est idéal pour un aperçu rapide de l'état du cluster (les pods tombent-ils ?)*, mais il n'est pas adapté aux cas d'utilisation de support et de réponse aux incidents décrits ci-dessus.

* Noter. trad.: En ce sens, vous pourriez également être intéressé par notre plugin grafana-statutmap, dont nous avons parlé plus en détail dans cet article.

Rapport sur les ressources Kubernetes (kube-resource-report)

« Collectez les demandes de ressources de pod et de cluster Kubernetes, comparez-les à la consommation de ressources et générez du HTML statique. »

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Rapport sur les ressources Kubernetes génère des rapports HTML statiques sur l'utilisation des ressources et la répartition des coûts entre les équipes/applications dans les clusters. Le rapport est quelque peu utile pour le support et la réponse aux incidents car il vous permet de trouver rapidement le cluster sur lequel l'application est déployée.

Noter. trad.: Un service et un outil peuvent également être utiles pour afficher des informations sur l'allocation des ressources et leurs coûts entre les fournisseurs de cloud. Kubécost, que nous examinons récemment publié.

Octante

"Une plateforme Web extensible pour les développeurs conçue pour permettre une meilleure compréhension de la complexité des clusters Kubernetes."

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Octante, créé par VMware, est un nouveau produit dont j'ai découvert relativement récemment. Avec son aide, il est pratique d'explorer le cluster sur une machine locale (il existe même des visualisations), mais il n'aborde les problèmes de support et de réponse aux incidents que dans une mesure limitée. Inconvénients d'Octant :

  • Aucune recherche de cluster.
  • Fonctionne uniquement sur la machine locale (ne se déploie pas sur un cluster).
  • Impossible de trier/filtrer les objets (seul le sélecteur d'étiquette est pris en charge).
  • Vous ne pouvez pas spécifier de colonnes personnalisées.
  • Vous ne pouvez pas répertorier les objets par espace de noms.

J'ai aussi eu des problèmes avec la stabilité d'Octant avec les clusters Zalando : sur certains CRD il tombait.

Présentation de la vue Web Kubernetes

"kubectl pour le web".

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)

Après avoir analysé les options d'interface disponibles pour Kubernetes, j'ai décidé d'en créer une nouvelle : Vue Web Kubernetes. Après tout, en fait, j'ai juste besoin de toute la puissance kubectl sur le web, à savoir :

  • disponibilité de toutes les opérations (en lecture seule) pour lesquelles les utilisateurs préfèrent utiliser kubectl ;
  • toutes les URL doivent être permanentes et représenter la page dans sa forme originale afin que les collègues puissent les partager et les utiliser dans d'autres outils ;
  • prise en charge de tous les objets Kubernetes, qui vous permettront de résoudre tout type de problème ;
  • les listes de ressources doivent être téléchargeables pour des travaux ultérieurs (dans des feuilles de calcul, des outils CLI comme grep) et le stockage (par exemple, pour les autopsies) ;
  • prise en charge de la sélection des ressources par étiquette (similaire à kubectl get .. -l);
  • la possibilité de créer des listes combinées de différents types de ressources (similaires à kubectl get all) pour obtenir une image opérationnelle commune entre collègues (par exemple, lors d'une réponse à un incident) ;
  • la possibilité d'ajouter des liens profonds intelligents personnalisés vers d'autres outils tels que des tableaux de bord, des enregistreurs, des registres d'applications, etc. pour faciliter le dépannage/la résolution des erreurs et la réponse aux incidents ;
  • L'interface doit être aussi simple que possible (HTML pur) pour éviter les problèmes aléatoires, tels que le gel du JavaScript ;
  • prise en charge de plusieurs clusters pour simplifier l'interaction lors de la consultation à distance (par exemple, pour mémoriser une seule URL) ;
  • Si possible, l'analyse de la situation doit être simplifiée (par exemple, avec des liens pour télécharger des ressources pour tous les clusters/espaces de noms) ;
  • des fonctionnalités supplémentaires pour générer des liens flexibles et mettre en évidence des informations textuelles, par exemple, afin que vous puissiez diriger vos collègues vers une section spécifique dans la description de la ressource (une ligne en YAML) ;
  • la possibilité de s'adapter aux exigences d'un client spécifique, par exemple, vous permettant de créer des modèles d'affichage spéciaux pour les CRD, vos propres vues de tableau et de modifier les styles CSS ;
  • des outils pour une exploration plus approfondie sur la ligne de commande (par exemple, afficher les commandes complètes kubectl, prêt à être copié) ;

Au-delà des tâches résolues dans Kubernetes Web View (non-buts) restait :

  • abstraction d'objets Kubernetes ;
  • gestion des applications (par exemple, gestion du déploiement, chartes Helm, etc.) ;
  • opérations d'écriture (doivent être effectuées via des outils sécurisés CI/CD et/ou GitOps) ;
  • belle interface (JavaScript, thèmes, etc.) ;
  • visualisation (voir vue kube-ops);
  • analyse des coûts (voir rapport-ressources Kube).

Comment Kubernetes Web View contribue-t-il à l'assistance et à la réponse aux incidents ?

support

  • Tous les liens sont permanents, ce qui facilite l'échange d'informations avec des collègues.
  • Vous pouvez créer tes idées, par exemple, affichez tous les déploiements et pods avec une étiquette spécifique dans deux clusters spécifiques (plusieurs noms de cluster et types de ressources peuvent être spécifiés dans le lien, séparés par des virgules).
  • Vous pouvez vous référer à lignes spécifiques dans un fichier YAML objet, indiquant des problèmes potentiels dans la spécification de l'objet.

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur Web pour Kubernetes)
Rechercher par clusters dans Kubernetes Web View

Réponse aux incidents

  • Recherche globale (recherche globale) vous permet de rechercher des objets dans tous les clusters.
  • Vues de liste peut afficher tous les objets avec un certain état/colonne 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 TSV (valeurs séparées par des tabulations) pour une analyse ultérieure.
  • Liens externes personnalisables Vous permet de basculer vers les tableaux de bord et autres outils associés.

Annonce de la vue Web Kubernetes (et un bref aperçu des autres interfaces utilisateur 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 vous recommande de consulter Documentation ou regarde démo en direct.

Bien sûr, l'interface pourrait être meilleure, 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 contacter avec moi sur Twitter!

Cet article est un bref historique du contexte qui a conduit à la création de Kubernetes Web View. D'autres suivront ! (Noter. trad.: Ils devraient être attendus dans le blog de l'auteur.)

PSdu traducteur

A lire aussi sur notre blog :

Source: habr.com

Ajouter un commentaire