Présentation des interfaces graphiques pour Kubernetes

Présentation des interfaces graphiques pour Kubernetes

Pour un travail à part entière avec le système, la connaissance des utilitaires de ligne de commande est importante : dans le cas de Kubernetes, il s'agit de kubectl. D'autre part, des interfaces graphiques bien conçues et réfléchies peuvent fonctionnerоla plupart des tâches habituelles et ouvrent des opportunités supplémentaires pour le fonctionnement des systèmes.

L'année dernière, nous avons publié une traduction petit aperçu de l'interface utilisateur Web pour Kubernetes, programmé pour coïncider avec l'annonce de l'interface Web Vue Web Kubernetes. L'auteur de cet article et l'utilitaire lui-même, Henning Jacobs de Zalando, viennent de positionner le nouveau produit comme "kubectl pour le web". Il voulait créer un outil avec des capacités conviviales d'interaction dans un format de support technique (par exemple, montrer rapidement le problème avec un lien Web) et pour répondre aux incidents, en recherchant des problèmes dans de nombreux clusters en même temps. Sa progéniture se développe à l'heure actuelle (principalement grâce aux efforts de l'auteur lui-même).

Comme nous desservons de nombreux clusters Kubernetes de différentes tailles, nous souhaitons également pouvoir fournir un outil visuel à nos clients. Lors du choix d'une interface appropriée, les fonctionnalités suivantes étaient essentielles pour nous :

  • prise en charge de la différenciation des droits des utilisateurs (RBAC) ;
  • visualisation de l'état de l'espace de noms et des primitives standards de Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC) ;
  • accéder à la ligne de commande à l'intérieur du pod ;
  • afficher les journaux des pods ;
  • afficher l'état des pods (describe status);
  • enlever les gousses.

D'autres fonctions, telles que la visualisation des ressources consommées (dans le contexte des pods / contrôleurs / espaces de noms), la création / l'édition de primitives K8s, ne sont pas pertinentes dans notre workflow.

Nous commencerons l'examen avec le tableau de bord Kubernetes classique, qui est notre standard. Puisque le monde ne s'arrête pas (ce qui signifie que Kubernetes a de plus en plus de nouvelles interfaces graphiques), nous parlerons également de ses alternatives actuelles, résumant le tout dans un tableau comparatif à la fin de l'article.

NB: Dans l'examen, nous ne répéterons pas avec les solutions qui ont déjà été envisagées dans dernier article, cependant, par souci d'exhaustivité, les options pertinentes (K8Dash, Octant, Kubernetes Web View) sont incluses dans le tableau final.

1. Tableau de bord Kubernetes

  • Page documentaire;
  • dépôt (8000+ étoiles GitHub);
  • Licence : Apache 2.0 ;
  • En bref : "Interface Web universelle pour les clusters Kubernetes. Il permet aux utilisateurs de gérer et de dépanner les applications exécutées dans le cluster, ainsi que de gérer le cluster lui-même. »

Présentation des interfaces graphiques pour Kubernetes

Il s'agit d'un panneau à usage général couvert par les auteurs de Kubernetes dans la documentation officielle (mais non déployable défaut). Il est conçu pour les besoins du fonctionnement quotidien et du débogage des applications dans un cluster. Chez nous, nous l'utilisons comme un outil visuel léger à part entière qui nous permet de fournir aux développeurs l'accès nécessaire et suffisant au cluster. Ses capacités couvrent tous leurs besoins qui surviennent dans le processus d'utilisation du cluster (en cet article nous avons démontré certaines fonctionnalités du panneau). Comme vous pouvez le deviner, cela signifie qu'il répond à toutes nos exigences énumérées ci-dessus.

Parmi les principales fonctionnalités de Kubernetes Dashboard :

  • Navigation : visualisez les principaux objets de K8 dans le contexte des espaces de noms.
  • Si vous disposez de droits d'administrateur, le panneau affiche les nœuds, les espaces de noms et les volumes persistants. Pour les nœuds, des statistiques sont disponibles sur l'utilisation de la mémoire, du processeur, de l'allocation des ressources, des métriques, de l'état, des événements, etc.
  • Visualisez les applications déployées dans un espace de noms par leur type (Deployment, StatefulSet, etc.), les relations entre elles (ReplicaSet, Horizontal Pod Autoscaler), les statistiques et informations générales et personnalisées.
  • Affichez les services et les entrées, ainsi que leurs relations avec les pods et les points de terminaison.
  • Affichez les objets et les stockages de fichiers : Persistent Volume et Persistent Volume Claim.
  • Affichez et modifiez ConfigMap et Secret.
  • Regardes les connexions.
  • Accès en ligne de commande dans les conteneurs.

Un inconvénient important (cependant, pas pour nous) est qu'il n'y a pas de support pour le travail multi-cluster. Le projet est activement développé par la communauté et maintient des fonctionnalités pertinentes avec la sortie de nouvelles versions et spécifications de l'API Kubernetes : la dernière version du panneau est v2.0.1 22 mai 2020 - Testé pour la compatibilité avec Kubernetes 1.18.

2. Objectif

Présentation des interfaces graphiques pour Kubernetes

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

Principales caractéristiques/capacités de Lens :

  • Application autonome qui ne nécessite aucune installation à l'intérieur du cluster (plus précisément, Prometheus sera nécessaire pour obtenir toutes les métriques, mais une installation existante peut également être utilisée pour cela). L'installation « principale » se fait sur un ordinateur personnel sous Linux, macOS ou Windows.
  • Gestion multi-cluster (des centaines de clusters pris en charge).
  • Visualisation de l'état du cluster en temps réel.
  • Graphiques et tendances d'utilisation des ressources 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 en date du 16 juin 2020 Créé à l'origine par Kontena, aujourd'hui toute la propriété intellectuelle a été transférée à une organisation spéciale Laboratoires de Lakend, appelé "une union de geeks et de technologues natifs du cloud", qui est responsable de la "préservation et de la disponibilité des logiciels et produits Open Source de Kontena".

Lens est le deuxième projet le plus populaire sur GitHub dans la catégorie GUI pour Kubernetes, « ne perdant » que le tableau de bord Kubernets lui-même. Toutes les autres solutions Open Source n'appartenant pas à la catégorie CLI* ont une popularité nettement inférieure.

* Voir à propos des K9 dans la partie bonus de la revue.

3. Kubernétique

Présentation des interfaces graphiques pour Kubernetes

Il s'agit d'une application propriétaire installée sur un ordinateur personnel (Linux, macOS, Windows sont pris en charge). Ses auteurs promettent un remplacement complet de l'utilitaire de ligne de commande, et avec lui - pas besoin de se souvenir des commandes et même une multiplication par dix de la vitesse.

L'une des fonctionnalités intéressantes de l'outil est la prise en charge intégrée des graphiques Helm, et l'un des inconvénients est le manque de mesures de performances des applications.

Principales fonctionnalités de Kubernetic :

  • Affichage pratique de l'état du cluster. Un écran pour afficher tous les objets de cluster associés et leurs dépendances ; état de préparation rouge/vert pour tous les objets ; mode d'affichage de l'état du cluster avec mises à jour de l'état en temps réel.
  • Boutons d'action rapide pour supprimer et mettre à l'échelle l'application.
  • Prise en charge du fonctionnement multi-cluster.
  • Travail simple avec des espaces de noms.
  • Prise en charge des chartes Helm et des référentiels Helm (y compris les référentiels privés). Installation et gestion des graphiques dans l'interface Web.

Le coût actuel du produit est un paiement unique de 30 euros pour son utilisation par une personne pour n'importe quel nombre d'espaces de noms et de clusters.

4. Kubevieux

  • site Web;
  • présentation;
  • dépôt (~500 étoiles GitHub) ;
  • Licence : Apache 2.0
  • En bref : "Kubevious rend les clusters Kubernetes, la configuration des applications et la visualisation de l'état sûrs et faciles à comprendre."

Présentation des interfaces graphiques pour Kubernetes

L'idée du projet est de créer un outil conçu pour analyser et déboguer les configurations d'applications déployées dans un cluster. Les auteurs se sont concentrés principalement sur la mise en œuvre de ces fonctionnalités, laissant les choses plus générales pour plus tard.

Principales caractéristiques et fonctions de Kubevious :

  • Visualisation du cluster de manière centrée sur l'application : les objets associés dans l'interface sont regroupés, alignés dans une hiérarchie.
  • Affichage visuel des dépendances dans les configurations et des conséquences en cascade de leurs modifications.
  • Affichage des erreurs de configuration du cluster : mauvaise utilisation des labels, ports manqués, etc. (Au fait, si vous êtes intéressé par cette fonctionnalité, faites attention à Polarisdont nous déjà écrit.)
  • En plus du point précédent, la détection des conteneurs potentiellement dangereux est disponible, c'est-à-dire avoir trop de privilèges (attributs hostPID, hostNetwork, hostIPC, monter docker.sock etc).
  • Système de recherche avancée du cluster (non seulement par les noms des objets, mais aussi par leurs propriétés).
  • Outils de planification des capacités et d'optimisation des ressources.
  • "Machine à voyager dans le temps" intégrée (la possibilité de voir les modifications précédentes dans la configuration des objets).
  • Gestion RBAC avec un tableau croisé dynamique de rôles, de liaisons de rôles et de comptes de service.
  • Fonctionne avec un seul cluster.

Le projet a une histoire très courte (la première version a eu lieu le 11 février 2020) et il semble qu'il y ait eu une période de stabilisation ou de ralentissement du développement. Si les versions précédentes étaient publiées fréquemment, la dernière version (v0.5 15 avril 2020) a pris du retard par rapport au rythme initial de développement. Cela est probablement dû au petit nombre de contributeurs : il n'y en a que 4 dans l'histoire du référentiel, et tout le travail proprement dit est fait par une seule personne.

5. Kubewise

  • Page du projet;
  • Licence : propriétaire (deviendra Open Source) ;
  • En bref : "Un simple client multiplateforme pour Kubernetes."

Présentation des interfaces graphiques pour Kubernetes

Un nouveau produit de VMware, initialement créé dans le cadre d'un hackathon interne (en juin 2019). Installé sur un ordinateur personnel, fonctionne sur la base de Électron (Linux, macOS et Windows pris en charge) et nécessite kubectl v1.14.0 ou version ultérieure.

Principales fonctionnalités de Kubewise :

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

Jusqu'à présent, le projet n'a qu'une seule version - version 1.1.0 en date du 26 novembre 2019. De plus, les auteurs prévoyaient de le publier immédiatement en Open Source, mais en raison de problèmes internes (non liés à des problèmes techniques), ils n'ont pas pu le faire. À partir de mai 2020, les auteurs travaillent sur la prochaine version et devraient lancer le processus d'ouverture du code en même temps.

6. Console OpenShift

Présentation des interfaces graphiques pour Kubernetes

Bien que cette interface Web fasse partie de la distribution OpenShift (elle y est installée à l'aide opérateur spécial), auteurs prévu la possibilité de l'installer / de l'utiliser dans des installations Kubernetes normales (vanilla).

OpenShift Console est en développement depuis longtemps, il a donc intégré de nombreuses fonctionnalités. Nous citerons les principaux :

  • Approche d'interface partagée - deux "perspectives" des possibilités disponibles dans la console : pour les administrateurs et pour les développeurs. Mode point de vue du développeur regroupe les objets sous une forme plus compréhensible pour les développeurs (par applications) et concentre l'interface sur la résolution de tâches typiques telles que le déploiement d'applications, le suivi de l'état de construction/déploiement et même l'édition de code via Eclipse Che.
  • Gestion des charges de travail, réseau, stockage, droits d'accès.
  • Séparation logique des charges de travail en projets et applications. Dans l'une des dernières versions - v4.3 - est apparu spécial Tableau de bord du projet, qui affiche les données habituelles (le nombre et les statuts des déploiements, des pods, etc. ; la consommation de ressources et d'autres métriques) dans une tranche de projet.
  • Mise à jour en temps réel de l'affichage de l'état du cluster, des changements (événements) qui s'y sont produits ; affichage des journaux.
  • Visualisez les données de surveillance basées sur Prometheus, Alertmanager et Grafana.
  • Gestion des opérateurs représentés dans OpérateurHub.
  • Gérer les builds qui s'exécutent via Docker (à partir d'un référentiel spécifié avec un Dockerfile), S2I ou des utilitaires externes arbitraires.

NB: Nous n'avons pas ajouté d'autres à la comparaison Distributions Kubernetes (par exemple, le bien moins connu Kubesphère): malgré le fait que l'interface graphique puisse être très avancée, elle fait généralement partie de la pile intégrée d'un grand système. Cependant, si vous pensez qu'il n'y a pas assez de solutions qui fonctionnent pleinement dans l'installation de vanilla K8s, faites-le nous savoir dans les commentaires.

prime

1. Portainer sur Kubernetes en bêta

  • site Web;
  • dépôt (~100 étoiles GitHub) ;
  • Licence : Zlib(?) (idem pour le projet parent).

Un 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 (la première et unique version bêta est sorti 16 avril 2020), nous n'avons pas évalué ses fonctionnalités. Cependant, il peut en intéresser plus d'un : si cela vous concerne, suivez l'évolution.

2. Panneau de glace

  • site Web;
  • Licence : propriétaire ;
  • En bref : "Visual Kubernetes Editor".

Présentation des interfaces graphiques pour Kubernetes

Cette jeune application de bureau vise à visualiser et gérer les ressources Kubernetes en temps réel avec une simple interface glisser-déposer. Les objets actuellement pris en charge sont Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap et Secret. Bientôt, ils promettent d'ajouter un support pour Helm. Les principaux inconvénients sont la proximité du code (on s'attend ouverture "d'une certaine manière") et le manque de prise en charge de Linux (jusqu'à présent, seules les versions pour Windows et macOS sont disponibles, bien que ce ne soit probablement qu'une question de temps).

3.k9s

  • site Web;
  • Démonstration;
  • dépôt (~7700 étoiles GitHub) ;
  • Licence : Apache 2.0 ;
  • En bref : "Une interface de console pour Kubernetes qui vous permet de gérer votre cluster avec style."

Présentation des interfaces graphiques pour Kubernetes

L'utilitaire n'était que dans la partie bonus de l'examen car il offre une interface graphique de 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, et un système avancé de raccourcis clavier et d'alias de commande. Leur approche approfondie ne s'est pas limitée à l'apparence : les fonctionnalités de k9s sont agréablement impressionnantes : gestion des ressources, affichage de l'état du cluster, affichage des ressources dans une représentation hiérarchique avec dépendances, affichage des logs, support RBAC, extension des capacités via des plugins... Tout cela a séduit à la large communauté K8s : le nombre Les stars GitHub du projet sont presque aussi bonnes que le tableau de bord Kubernetes officiel !

4. Panneaux de contrôle des applications

Et à la fin de l'examen - une mini-catégorie distincte. Il comprenait deux interfaces Web conçues non pas pour la gestion complète des clusters Kubernetes, mais pour gérer ce qui y est déployé.

Comme vous le savez, l'un des outils les plus matures et les plus répandus pour déployer des applications complexes dans Kubernetes est Helm. Sur la période de son existence, de nombreux packages (cartes Helm) se sont accumulés pour un déploiement facile de nombreuses applications populaires. Par conséquent, l'apparition d'outils visuels appropriés permettant de gérer le cycle de vie des graphiques est tout à fait logique.

4.1. Monoculaire

  • dépôt (1300+ étoiles GitHub);
  • Licence : Apache 2.0 ;
  • En bref : "Une application Web pour rechercher et découvrir des chartes Helm dans plusieurs référentiels. Sert de base au projet de hub Helm."

Présentation des interfaces graphiques pour Kubernetes

Ce développement des auteurs de Helm est installé dans Kubernetes et fonctionne au sein du même cluster, effectuant la tâche. Cependant, à l'heure actuelle, le projet n'est presque pas développé. Son objectif principal est de soutenir l'existence du Helm Hub. Pour d'autres besoins, les auteurs recommandent Kubeapps (voir ci-dessous) ou Red Hat Automation Broker (qui fait partie d'OpenShift, mais qui n'est plus développé non plus).

4.2. Kubeapps

  • site Web;
  • présentation;
  • dépôt (~2100 étoiles GitHub) ;
  • Licence : Apache 2.0
  • En bref : "Votre tableau de bord d'application pour Kubernetes."

Présentation des interfaces graphiques pour Kubernetes

Un produit de Bitnami, qui est également installé dans un cluster Kubernetes, mais diffère de Monocular par son objectif initial de travailler avec des référentiels privés.

Fonctions et fonctionnalités clés de Kubeapps :

  • Affichez et installez des chartes Helm à partir de référentiels.
  • Vérifiez, mettez à jour et supprimez les applications Helm installées sur le cluster.
  • Prise en charge des référentiels de graphiques personnalisés et privés (prend en charge ChartMuseum et JFrog Artifactory).
  • Affichage et utilisation de services externes - à partir du catalogue de services et des courtiers de services.
  • Publication des applications installées à l'aide du mécanisme Service Catalog Bindings.
  • Prise en charge de l'authentification et de la séparation des droits à l'aide de RBAC.

Sommaire

Ci-dessous un tableau récapitulatif dans lequel nous avons essayé de résumer et d'agréger les principales fonctionnalités des interfaces visuelles existantes pour faciliter la comparaison :

Présentation des interfaces graphiques pour Kubernetes
(Version en ligne du tableau disponible sur Google Documents.)

Conclusion

Les interfaces graphiques pour Kubernetes sont un créneau plutôt spécifique et jeune. Cependant, il se développe très activement : il est déjà possible de trouver à la fois des solutions assez matures, et de très jeunes, qui ont encore de la place pour grandir. Ils répondent à une variété d'applications, offrant des fonctionnalités et des looks pour convenir à presque tous les goûts. Nous espérons que cette revue vous aidera à choisir l'outil qui correspond le mieux à vos besoins actuels.

PS

Merci! kvaps pour les données sur la console OpenShift pour le tableau de comparaison !

A lire aussi sur notre blog :

Source: habr.com

Ajouter un commentaire