Aperçu des interfaces graphiques pour Kubernetes

Aperçu des interfaces graphiques pour Kubernetes

Pour une utilisation complète du système, il est important de connaître les utilitaires de la ligne de commande : dans le cas de Kubernetes, il s'agit de kubectl. D'autre part, des interfaces graphiques bien conçues peuvent réaliser la plupart des tâches courantes et ouvrir des possibilités supplémentaires lors de l'exploitation des systèmes.deL'année dernière, nous avons publié la traduction

d'un petit aperçu de l'interface web pour Kubernetes, en lien avec l'annonce de l'interface web Kubernetes Web View. 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 gérant de nombreux clusters Kubernetes de différentes tailles, nous sommes également intéressés par la possibilité de fournir à nos clients un outil de travail visuel. Dans le choix de l'interface appropriée, les fonctionnalités suivantes étaient clés pour nous :

prise en charge de la gestion des droits des utilisateurs (RBAC) ;

  • visualisation de l'état des espaces de noms et des primitives standards de Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC) ;
  • accès à la ligne de commande à l'intérieur du pod ;
  • visualisation des logs des pods ;
  • visualisation de l'état des pods (
  • describe statussuppression des pods.);
  • D'autres fonctionnalités, telles que la visualisation des ressources consommées (par pod / contrôleurs / espaces de noms), la création / édition des primitives K8s, ne sont pas pertinentes dans le cadre de notre flux de travail.

Nous commencerons notre aperçu avec le Kubernetes Dashboard classique, adopté comme standard chez nous. Étant donné que le monde ne reste pas immobile (et que de nouvelles interfaces graphiques pour Kubernetes apparaissent constamment), nous aborderons également ses alternatives actuelles, en résumant le tout dans un tableau comparatif à la fin de l'article.

: Dans cet aperçu, nous ne nous répéterons pas avec les solutions qui ont déjà été examinées dans

NB, cependant, pour compléter le tableau, les options pertinentes de celle-ci (K8Dash, Octant, Kubernetes Web View) sont incluses dans le tableau final. Dans notre précédent article,1. Kubernetes Dashboard

Page de documentation

  • (8000+ étoiles sur GitHub) ;;
  • Dépôt Licence : Apache 2.0 ;
  • Лицензия: Apache 2.0;
  • En résumé : « Une interface web universelle pour les clusters Kubernetes. Elle permet aux utilisateurs de gérer les applications fonctionnant dans le cluster, de dépanner et de gérer le cluster lui-même. »

Aperçu des interfaces graphiques pour Kubernetes

C'est un panneau polyvalent, considéré par les auteurs de Kubernetes dans la documentation officielle. (bien qu’il ne soit pas déployable par défaut).Il est conçu pour les besoins quotidiens de fonctionnement et de débogage des applications dans le cluster. Nous l'utilisons comme un véritable outil visuel léger, permettant de donner aux développeurs l'accès nécessaire et suffisant au cluster. Ses fonctionnalités couvrent tous leurs besoins lors de l’utilisation du cluster. (dans cet article Nous avons démontré certaines fonctionnalités du panneau.)Comme il est facile de le deviner, cela signifie qu'il répond à toutes nos exigences énumérées ci-dessus.

Parmi les principales fonctionnalités du tableau de bord Kubernetes :

  • Navigation : visualisation des principaux objets K8s par espace de noms.
  • Avec des droits administratifs, le panneau affiche les nœuds, les espaces de noms et les volumes persistants. Des statistiques sont disponibles sur l'utilisation de la mémoire, du processeur, l'allocation des ressources, des métriques, l'état, les événements, etc.
  • Visualisation des applications déployées dans un espace de noms par type (Deployment, StatefulSet, etc.), les relations entre elles (ReplicaSet, Horizontal Pod Autoscaler), ainsi que des statistiques et informations générales et personnalisées.
  • Visualisation des services et des Ingress, ainsi que de leurs relations avec les pods et les points de terminaison.
  • Visualisation des objets de fichiers et de stockage : Persistent Volume et Persistent Volume Claim.
  • Visualisation et édition des ConfigMap et Secret.
  • Visualisation des journaux.
  • Accès à la ligne de commande dans les conteneurs.

Un inconvénient significatif (cependant, pas pour nous) — pas de support pour le travail multi-clusters. Le projet est activement développé par la communauté et soutient les fonctionnalités actuelles à la sortie de nouvelles versions et spécifications de l'API Kubernetes : la dernière version du panneau est v2.0.1 du 22 mai 2020 — testée pour la compatibilité avec Kubernetes 1.18.

2. Lens

Aperçu des interfaces graphiques pour Kubernetes

Le projet se positionne comme un véritable environnement de développement intégré (IDE) pour Kubernetes. De plus, il est optimisé pour gérer de nombreux clusters et un grand nombre de pods en cours d'exécution (testé sur 25 000 pods).

Principales caractéristiques / fonctionnalités de Lens :

  • Application autonome ne nécessitant aucune installation dans le cluster (plus précisément, pour obtenir toutes les métriques, Prometheus est requis, mais une installation existante peut être utilisée). L'installation « principale » est réalisée sur un ordinateur personnel sous Linux, macOS ou Windows.
  • Gestion multi-cluster (prise en charge de centaines de clusters).
  • Visualisation de l'état du cluster en temps réel.
  • Graphiques d'utilisation des ressources et tendances avec historique basé sur Prometheus intégré.
  • Accès à la ligne de commande des conteneurs et sur les nœuds du cluster.
  • Prise en charge complète de Kubernetes RBAC.

Version actuelle — 3.5.0 du 16 juin 2020. La version initiale a été créée par Kontena, et aujourd'hui, toute la propriété intellectuelle a été transférée à une organisation spéciale Lakend Labs, appelée « l'union des passionnés et des technologues cloud native », qui est responsable de « la préservation et de l'accessibilité des logiciels Open Source et des produits Kontena ».

Lens est le deuxième projet le plus populaire sur GitHub dans la catégorie GUI pour Kubernetes, « surpassant » seulement le propre Kubernetes Dashboard. Toutes les autres solutions Open Source en dehors de la catégorie CLI* sont significativement moins populaires.

* Voir K9s dans la partie bonus de la revue.

3. Kubernetic

Aperçu des interfaces graphiques pour Kubernetes

C'est une application propriétaire qui s'installe sur un ordinateur personnel (prise en charge de Linux, macOS, Windows). Ses auteurs promettent un remplacement complet de l'utilitaire en ligne de commande, sans besoin de mémoriser des commandes et même une augmentation de la vitesse de travail jusqu'à dix fois.

L'une des caractéristiques intéressantes de cet outil est le support intégré des Helm charts, tandis qu'un des inconvénients est l'absence de métriques de performance des applications.

Principales caractéristiques de Kubernetic :

  • Affichage pratique de l'état du cluster. Un écran pour voir tous les objets liés au cluster et leurs dépendances; état de préparation rouge/vert pour tous les objets; mode de visualisation de l'état du cluster avec mise à jour du statut en temps réel.
  • Boutons d'action rapide pour supprimer et dimensionner des applications.
  • Prise en charge du travail multi-cluster.
  • Travail simple avec les espaces de noms.
  • Support for Helm charts and Helm repositories (including private ones). Installation and management of charts via the web interface.

The current product cost is a one-time payment of 30 euros for use by one person across any number of namespaces and clusters.

4. Kubevious

  • Site;
  • Présentation;
  • Dépôt (~500 stars on GitHub);
  • Licence : Apache 2.0
  • In short: 'Kubevious makes Kubernetes clusters, application configurations, and monitoring their state secure and easy to understand.'

Aperçu des interfaces graphiques pour Kubernetes

The project's idea is to create a tool designed for analyzing and debugging application configurations deployed in a cluster. The authors focused first on implementing these features, leaving more general aspects for later.

Key features and functions of Kubevious:

  • Visualization of the cluster in an application-oriented manner: related objects in the interface are grouped, forming a hierarchy.
  • Clear display of dependencies in configurations and cascading effects of their changes.
  • Display of cluster configuration errors: incorrect use of labels, missed ports, etc. (By the way, if you are interested in this feature, pay attention to Polaris, dont nous avons déjà parlé.)
  • In addition to the previous point, it is possible to detect potentially dangerous containers, i.e., those with excessive privileges (attributes hostPID, hostNetwork, hostIPC, mounting docker.sock and the like).
  • Advanced search system across the cluster (not just by object names, but also by their properties).
  • Tools for capacity planning and resource optimization.
  • Built-in 'time machine' (ability to see previous changes to object configurations).
  • RBAC management using a summary interrelated table of Roles, RoleBindings, ServiceAccounts.
  • Works only with a single cluster.

The project has a very short history (the first release was on February 11, 2020) and seems to be entering either a stabilization or slowdown phase in development. While previous versions were released frequently, the latest release (v0.5 from April 15, 2020) has lagged behind the initial development pace. This might be due to the small number of contributors: there are only 4 in the repository's history, and all actual work is done by one person.

5. Kubewise

  • Page du projet;
  • License: proprietary (will become Open Source);
  • In short: 'A simple cross-platform client for Kubernetes.'

Aperçu des interfaces graphiques pour Kubernetes

Nouveau produit de VMware, initialement créé lors d'un hackathon interne (en juin 2019). S'installe sur un ordinateur personnel, fonctionne sous Electron (sous Linux, macOS et Windows) et nécessite kubectl version 1.14.0 ou supérieure.

Fonctionnalités principales de Kubewise :

  • Interaction dans l'interface avec les entités Kubernetes les plus couramment utilisées : nœuds, espaces de noms, etc.
  • Support de plusieurs fichiers kubeconfig pour différents clusters.
  • Terminal avec possibilité de définir une variable d'environnement KUBECONFIG.
  • Génération de fichiers kubeconfig personnalisés pour l'espace de noms spécifié.
  • Fonctionnalités de sécurité avancées (RBAC, mots de passe, comptes de service).

Pour l'instant, le projet n'a qu'une seule version - la version 1.1.0 du 26 novembre 2019. Les auteurs avaient initialement prévu de le publier en Open Source, mais en raison de problèmes internes (non liés à des questions techniques), ils n'ont pas pu le faire. À partir de mai 2020, les auteurs travaillent sur la prochaine version, et doivent parallèlement initier le processus d'ouverture du code.

6. Console OpenShift

Aperçu des interfaces graphiques pour Kubernetes

Bien que cette interface Web fasse partie de la distribution OpenShift (elle est installée avec un opérateur spécial), les auteurs ont prévu la possibilité de l'installer/utiliser également dans des installations Kubernetes standard (vanilla).

La Console OpenShift est en développement depuis longtemps, elle a donc intégré de nombreuses fonctionnalités. Mentionnons les principales :

  • Approche partagée de l'interface - deux « perspectives » des fonctionnalités disponibles dans la Console : pour les administrateurs et pour les développeurs. Le mode Developer perspective regroupe les objets d'une manière plus compréhensible pour les développeurs (par applications) et oriente l'interface vers la résolution de tâches typiques telles que le déploiement d'applications, le suivi de l'état de la construction / déploiement et même l'édition de code via Eclipse Che.
  • Gestion des charges de travail, du réseau, des stockages, des droits d'accès.
  • Division logique des charges de travail en projets et applications. Dans l'un des derniers versions - v4.3 - est apparu un tableau de bord spécial Project dashboard, affichant les données habituelles (nombre et états des déploiements, pods, etc.; consommation des ressources et autres métriques) à l'échelle des projets.
  • Affichage en temps réel de l'état du cluster, des changements survenus (événements) ; consultation des journaux.
  • Consultation des données de surveillance basées sur Prometheus, Alertmanager et Grafana.
  • Gestion des opérateurs présentés dans OperatorHub.
  • Gestion des constructions exécutées via Docker (à partir du dépôt spécifié avec Dockerfile), S2I ou des utilitaires externes arbitraires.

NB: Nous n'avons pas ajouté d'autres distributions Kubernetes (par exemple, bien moins connu que Kubesphere): même si l'interface graphique peut être très avancée, elle fait généralement partie d'un stack intégré d'un grand système. Cependant, si vous pensez qu'il manque des solutions pleinement fonctionnelles dans une installation vanilla de K8s, faites-le nous savoir dans les commentaires.

Bonus

1. Portainer on Kubernetes en version bêta

  • Site;
  • Dépôt (~100 étoiles GitHub);
  • Licence : Zlib(?) (c'est celle du projet parent).

Projet de l'équipe Portainer, qui a développé l'interface populaire du même nom pour travailler avec Docker. Étant donné que le projet est à un stade précoce de développement (première et unique version bêta la nouvelle version de Google Chrome numéro 75 est sortie. Il n'y avait pas de changements ou de mises à jour notables, cependant, les développeurs ont corrigé 42 vulnérabilités et ajouté un mode lecture. Cependant, contrairement à d'autres navigateurs, il fonctionne de manière assez étrange. En particulier, il ne reconnaît pas encore tout le texte de la page. De plus, il doit être activé manuellement via des drapeaux, ce qui semble plutôt étrange. 16 avril 2020), nous n'avons pas évalué ses fonctionnalités. Cependant, cela pourrait intéresser beaucoup de personnes : si c'est votre cas, suivez l'évolution.

2. IcePanel

  • Site;
  • Licence : propriétaire;
  • En résumé : « Éditeur visuel Kubernetes ».

Aperçu des interfaces graphiques pour Kubernetes

C'est une jeune application de bureau destinée à visualiser en temps réel les ressources Kubernetes et à les gérer avec une interface simple dans l'esprit du glisser-déposer. Les objets actuellement pris en charge sont Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap et Secret. Le support de Helm est attendu dans un futur proche. Les principaux inconvénients sont la fermeture du code (son ouverture est attendue « d'une certaine manière » ) et l'absence de support Linux (pour l'instant, seules les versions pour Windows et macOS sont disponibles, bien que cela ne soit probablement qu'une question de temps).3. k9s

(~7700 étoiles GitHub);

  • Site;
  • Démonstration;
  • Dépôt En résumé : « Interface de console pour Kubernetes, permettant de gérer le cluster avec style ».
  • Лицензия: Apache 2.0;
  • Вкратце: «Консольный интерфейс для Kubernetes, позволяющий стильно управлять кластером».

Aperçu des interfaces graphiques pour Kubernetes

L'outil n'a été mentionné que dans la partie bonus de l'examen en raison de son interface graphique en console. Cependant, les auteurs ont littéralement tiré le maximum du terminal, offrant non seulement une interface conviviale, mais aussi 6 thèmes prédéfinis, un système développé de combinaisons de touches et des alias pour les commandes. Leur approche rigoureuse ne s'est pas limitée à l'apparence : les capacités de k9s impressionnent agréablement : gestion des ressources, affichage de l'état du cluster, visualisation des ressources de manière hiérarchique avec dépendances, consultation des journaux, support RBAC, extensions via des plugins… Tout cela a été apprécié par la vaste communauté K8s : le nombre d'étoiles GitHub du projet est presque équivalent à celui du tableau de bord Kubernetes officiel !

4. Panneaux de contrôle des applications

Et pour conclure cet examen, une mini-catégorie distincte. Elle comprend deux interfaces web, conçues non pas pour la gestion complète des clusters Kubernetes, mais pour le contrôle de ce qui y est déployé.

Comme on le sait, l'un des outils les plus matures et les plus répandus pour le déploiement d'applications complexes dans Kubernetes est Helm. Depuis son existence, de nombreux paquets (Helm charts) ont été accumulés pour un déploiement simple de nombreuses applications populaires.Il est donc tout à fait logique que des outils visuels correspondants soient également apparus, permettant de gérer le cycle de vie des charts.

4.1. Monocular

  • Dépôt (1300+ étoiles GitHub);
  • Лицензия: Apache 2.0;
  • En résumé : « Application web pour la recherche et la découverte de Helm charts dans de nombreux dépôts. Constitue la base du projet Helm hub ».

Aperçu des interfaces graphiques pour Kubernetes

Cette création des auteurs de Helm s'installe dans Kubernetes et fonctionne au sein d'un seul cluster, accomplissant la tâche assignée. Cependant, actuellement le projet n'est presque plus développé. Son but principal est de soutenir l'existence de Helm Hub. Pour d'autres besoins, les auteurs recommandent Kubeapps (voir ci-dessous) ou Red Hat Automation Broker (partie d'OpenShift, mais également plus développée).

4.2. Kubeapps

  • Site;
  • Présentation;
  • Dépôt (~2100 étoiles GitHub);
  • Licence : Apache 2.0
  • En résumé : « Votre tableau de bord d'applications pour Kubernetes ».

Aperçu des interfaces graphiques pour Kubernetes

Produit de Bitnami, qui s'installe également dans un cluster Kubernetes, mais se distingue de Monocular par son orientation initiale vers les dépôts privés.

Fonctionnalités clés et caractéristiques de Kubeapps :

  • Visualisation et installation de Helm charts depuis des dépôts.
  • Vérification, mise à jour et suppression d'applications basées sur Helm, installées dans le cluster.
  • Support for working with custom and private chart repositories (supports ChartMuseum and JFrog Artifactory).
  • Viewing and working with external services — from the Service Catalog and Service Brokers.
  • Publishing installed applications using the Service Catalog Bindings mechanism.
  • Support for authentication and permission separation using RBAC.

Summary Table

Below is a summary table where we have tried to consolidate and aggregate the main features of existing visual interfaces to facilitate comparison:

Aperçu des interfaces graphiques pour Kubernetes
(The online version of the table is available in Google Docs.)

Conclusion

Graphical interfaces for Kubernetes are quite a specific and young niche. However, it is developing quite actively: there are already both mature solutions and quite young ones that still have room to grow. They cater to different use cases, offering functions and designs to suit almost any taste. We hope this review helps you choose a tool that best meets current needs.

P.S.

Thank you kvaps for the data on the OpenShift Console for the comparison table!

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