Übersicht über GUIs für Kubernetes

Übersicht über GUIs für Kubernetes

Für die vollwertige Arbeit mit dem System sind Kenntnisse der Befehlszeilen-Dienstprogramme wichtig: Im Fall von Kubernetes ist dies kubectl. Auf der anderen Seite können gut gestaltete, durchdachte grafische Oberflächen funktionierenоErledigen Sie die meisten üblichen Aufgaben und eröffnen Sie zusätzliche Möglichkeiten für den Betrieb von Anlagen.

Letztes Jahr haben wir eine Übersetzung veröffentlicht kleiner Überblick über die Web-Benutzeroberfläche für Kubernetes, zeitgleich mit der Ankündigung der Webschnittstelle Kubernetes WebView. Der Autor dieses Artikels und des Dienstprogramms selbst, Henning Jacobs von Zalando, hat das neue Produkt gerade als „kubectl für das Web“ positioniert. Er wollte ein Tool mit benutzerfreundlichen Funktionen für die Interaktion im technischen Supportformat (z. B. schnelle Anzeige des Problems mit einem Weblink) und für die Reaktion auf Vorfälle und die gleichzeitige Suche nach Problemen in vielen Clustern entwickeln. Sein Nachwuchs entwickelt sich derzeit (hauptsächlich durch die Bemühungen des Autors selbst).

Da wir viele Kubernetes-Cluster unterschiedlicher Größe bedienen, sind wir auch daran interessiert, unseren Kunden ein visuelles Tool zur Verfügung stellen zu können. Bei der Auswahl einer geeigneten Schnittstelle waren für uns folgende Eigenschaften ausschlaggebend:

  • Unterstützung der Differenzierung von Benutzerrechten (RBAC);
  • Visualisierung des Namespace-Status und der Standard-Kubernetes-Primitive (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • Zugriff auf die Befehlszeile im Pod erhalten;
  • Protokolle von Pods anzeigen;
  • Sehen Sie sich den Status von Pods an (describe status);
  • Hülsen entfernen.

Andere Funktionen, wie das Anzeigen verbrauchter Ressourcen (im Kontext von Pods/Controllern/Namespaces) oder das Erstellen/Bearbeiten von K8s-Primitiven, sind in unserem Workflow nicht relevant.

Wir beginnen die Überprüfung mit dem klassischen Kubernetes-Dashboard, das unser Standard ist. Da die Welt nicht stillsteht (was bedeutet, dass Kubernetes immer mehr neue GUIs hat), werden wir auch über seine aktuellen Alternativen sprechen und alles in einer Vergleichstabelle am Ende des Artikels zusammenfassen.

NB: In der Überprüfung werden wir nicht auf die Lösungen eingehen, die bereits berücksichtigt wurden letzter ArtikelDer Vollständigkeit halber sind jedoch die relevanten Optionen daraus (K8Dash, Octant, Kubernetes Web View) in der Abschlusstabelle enthalten.

1. Kubernetes-Dashboard

  • Dokumentationsseite;
  • Repository (8000+ GitHub-Sterne);
  • Lizenz: Apache 2.0;
  • Kurz gesagt: „Universelle Webschnittstelle für Kubernetes-Cluster.“ Es ermöglicht Benutzern, im Cluster ausgeführte Anwendungen zu verwalten und Fehler zu beheben sowie den Cluster selbst zu verwalten.“

Übersicht über GUIs für Kubernetes

Dies ist ein Allzweck-Panel, das von den Kubernetes-Autoren in der offiziellen Dokumentation behandelt wird (Aber nicht einsetzbar Default). Es ist für die Anforderungen des täglichen Betriebs und Debuggens von Anwendungen in einem Cluster konzipiert. Zu Hause verwenden wir es als vollwertiges, leichtes visuelles Tool, das es uns ermöglicht, Entwicklern den notwendigen und ausreichenden Zugriff auf den Cluster zu ermöglichen. Seine Fähigkeiten decken alle Bedürfnisse ab, die bei der Nutzung des Clusters entstehen (In Dieser Artikel wir haben einige Funktionen des Panels demonstriert). Wie Sie sich vorstellen können, bedeutet dies, dass es alle oben aufgeführten Anforderungen erfüllt.

Zu den Hauptfunktionen des Kubernetes Dashboards gehören:

  • Navigation: Sehen Sie sich die Hauptobjekte von K8s im Kontext von Namespaces an.
  • Wenn Sie über Administratorrechte verfügen, werden im Bereich Knoten, Namespaces und persistente Volumes angezeigt. Für Knoten stehen Statistiken zur Speichernutzung, zum Prozessor, zur Ressourcenzuteilung, zu Metriken, zum Status, zu Ereignissen usw. zur Verfügung.
  • Zeigen Sie in einem Namespace bereitgestellte Anwendungen nach Typ (Bereitstellung, StatefulSet usw.), Beziehungen zwischen ihnen (ReplicaSet, Horizontal Pod Autoscaler) sowie allgemeinen und personalisierten Statistiken und Informationen an.
  • Sehen Sie sich Dienste und Ingresses sowie deren Beziehungen zu Pods und Endpunkten an.
  • Dateiobjekte und Speicher anzeigen: Persistent Volume und Persistent Volume Claim.
  • ConfigMap und Secret anzeigen und bearbeiten.
  • Protokolle anzeigen.
  • Befehlszeilenzugriff in Containern.

Ein wesentlicher Nachteil (allerdings nicht für uns) ist, dass es keine Unterstützung für Multi-Cluster-Arbeit gibt. Das Projekt wird von der Community aktiv weiterentwickelt und behält relevante Funktionen mit der Veröffentlichung neuer Versionen und Spezifikationen der Kubernetes-API bei: Die neueste Version des Panels ist v2.0.1 22. Mai 2020 – Auf Kompatibilität mit Kubernetes 1.18 getestet.

2. Objektiv

Übersicht über GUIs für Kubernetes

Das Projekt ist als vollständige integrierte Entwicklungsumgebung (IDE) für Kubernetes positioniert. Darüber hinaus ist es für die Arbeit mit vielen Clustern und einer großen Anzahl darin laufender Pods optimiert (getestet an 25 Pods).

Hauptmerkmale/Fähigkeiten von Lens:

  • Eigenständige Anwendung, die keine Installation von irgendetwas innerhalb des Clusters erfordert (genauer gesagt wird Prometheus benötigt, um alle Metriken abzurufen, aber eine bestehende Installation kann hierfür auch verwendet werden). Die „Haupt“-Installation erfolgt auf einem PC mit Linux, macOS oder Windows.
  • Multi-Cluster-Verwaltung (Hunderte von Clustern werden unterstützt).
  • Visualisierung des Zustands des Clusters in Echtzeit.
  • Diagramme und Trends zur Ressourcennutzung mit Verlauf basierend auf integriertem Prometheus.
  • Zugriff auf die Befehlszeile von Containern und auf Clusterknoten.
  • Volle Unterstützung für Kubernetes RBAC.

Aktuelle Version - 3.5.0 vom 16. Juni 2020 Ursprünglich von Kontena erstellt, wurde heute das gesamte geistige Eigentum an eine spezielle Organisation übertragen Lakeland Labs, genannt „eine Vereinigung von Cloud-nativen Geeks und Technologen“, die für die „Erhaltung und Verfügbarkeit der Open-Source-Software und -Produkte von Kontena“ verantwortlich ist.

Lens ist das zweitbeliebteste Projekt auf GitHub aus der Kategorie „GUI für Kubernetes“ und „verliert“ nur das Kubernets-Dashboard selbst. Alle anderen Open-Source-Lösungen außerhalb der CLI*-Kategorie liegen in der Beliebtheit deutlich zurück.

* Weitere Informationen zu K9s finden Sie im Bonusteil der Rezension.

3. Kubernetisch

Übersicht über GUIs für Kubernetes

Dabei handelt es sich um eine proprietäre Anwendung, die auf einem PC installiert wird (Linux, macOS, Windows werden unterstützt). Seine Autoren versprechen einen vollständigen Ersatz des Befehlszeilen-Dienstprogramms und damit keine Notwendigkeit, sich Befehle zu merken, und sogar eine zehnfache Steigerung der Geschwindigkeit.

Eines der interessanten Features des Tools ist die integrierte Unterstützung für Helm-Charts, und einer der Nachteile ist das Fehlen von Anwendungsleistungsmetriken.

Hauptmerkmale von Kubernetic:

  • Komfortable Anzeige des Clusterstatus. Ein Bildschirm zum Anzeigen aller zugehörigen Clusterobjekte und ihrer Abhängigkeiten; rot/grüner Bereitschaftsstatus für alle Objekte; Clusterstatus-Ansichtsmodus mit Statusaktualisierungen in Echtzeit.
  • Schnellaktionsschaltflächen zum Löschen und Skalieren der Anwendung.
  • Unterstützung für Multi-Cluster-Betrieb.
  • Einfache Arbeit mit Namespaces.
  • Unterstützung für Helm-Charts und Helm-Repositorys (einschließlich privater). Installieren und Verwalten von Diagrammen im Webinterface.

Der aktuelle Preis des Produkts beträgt einmalig 30 Euro für die Nutzung durch eine Person für beliebig viele Namensräume und Cluster.

4. Kubevious

  • Webseite;
  • Präsentation;
  • Repository (~500 GitHub-Sterne);
  • Lizenz: Apache 2.0
  • Kurz gesagt: „Kubevious macht Kubernetes-Cluster, Anwendungskonfiguration und Statusanzeige sicher und leicht verständlich.“

Übersicht über GUIs für Kubernetes

Die Idee des Projekts besteht darin, ein Tool zu erstellen, mit dem in einem Cluster bereitgestellte Anwendungskonfigurationen analysiert und debuggt werden können. Die Autoren konzentrierten sich hauptsächlich auf die Implementierung dieser Funktionen und überließen allgemeinere Dinge für später.

Hauptmerkmale und Funktionen von Kubevious:

  • Cluster-Visualisierung auf anwendungsorientierte Weise: Zusammengehörige Objekte in der Benutzeroberfläche werden gruppiert und in einer Hierarchie aufgereiht.
  • Visuelle Darstellung von Abhängigkeiten in Konfigurationen und kaskadierenden Konsequenzen ihrer Änderungen.
  • Anzeige von Cluster-Konfigurationsfehlern: Missbrauch von Labels, verpasste Ports usw. (Übrigens, wenn Sie an dieser Funktion interessiert sind, achten Sie auf Polarisworüber wir schon geschrieben.)
  • Zusätzlich zum vorherigen Punkt steht die Erkennung potenziell gefährlicher Behälter zur Verfügung, d. h. zu viele Privilegien haben (Attribute hostPID, hostNetwork, hostIPC, montieren docker.sock und dergleichen).
  • Erweitertes Suchsystem für den Cluster (nicht nur nach den Namen der Objekte, sondern auch nach ihren Eigenschaften).
  • Tools zur Kapazitätsplanung und Ressourcenoptimierung.
  • Integrierte „Zeitmaschine“ (die Möglichkeit, frühere Änderungen in der Konfiguration von Objekten zu sehen).
  • RBAC-Verwaltung mit einer Pivot-Tabelle mit Rollen, Rollenbindungen und Servicekonten.
  • Funktioniert mit nur einem Cluster.

Das Projekt hat eine sehr kurze Geschichte (die erste Veröffentlichung erfolgte am 11. Februar 2020) und es scheint, dass es eine Phase der Stabilisierung oder Verlangsamung der Entwicklung gegeben hat. Wenn frühere Versionen häufig veröffentlicht wurden, dann ist die neueste Version (v0.5 15. April 2020) ist hinter dem ursprünglichen Entwicklungstempo zurückgeblieben. Dies liegt wahrscheinlich an der geringen Anzahl von Mitwirkenden: In der Geschichte des Repositorys gibt es nur vier von ihnen, und die gesamte eigentliche Arbeit wird von einer Person erledigt.

5. Kubewise

  • Projektseite;
  • Lizenz: proprietär (wird Open Source);
  • Kurz gesagt: „Ein einfacher Multiplattform-Client für Kubernetes.“

Übersicht über GUIs für Kubernetes

Ein neues Produkt von VMware, ursprünglich im Rahmen eines internen Hackathons (im Juni 2019) erstellt. Auf einem PC installiert, funktioniert auf Basis von Elektron (Linux, macOS und Windows werden unterstützt) und erfordert kubectl v1.14.0 oder höher.

Hauptmerkmale von Kubewise:

  • Schnittstelleninteraktion mit den am häufigsten verwendeten Kubernetes-Entitäten: Knoten, Namespaces usw.
  • Unterstützung für mehrere kubeconfig-Dateien für verschiedene Cluster.
  • Terminal mit der Möglichkeit, eine Umgebungsvariable festzulegen KUBECONFIG.
  • Generieren Sie benutzerdefinierte kubeconfig-Dateien für den angegebenen Namespace.
  • Erweiterte Sicherheitsfunktionen (RBAC, Passwörter, Dienstkonten).

Bisher gibt es für das Projekt nur eine Release-Version 1.1.0 vom 26. November 2019. Darüber hinaus planten die Autoren, es sofort als Open Source zu veröffentlichen, konnten dies jedoch aufgrund interner Probleme (die nicht mit technischen Problemen zusammenhingen) nicht tun. Ab Mai 2020 arbeiten die Autoren an der nächsten Veröffentlichung und sollten gleichzeitig den Code-Open-Prozess einleiten.

6. OpenShift-Konsole

Übersicht über GUIs für Kubernetes

Obwohl dieses Webinterface Teil der OpenShift-Distribution ist (es wird dort mit installiert). Sonderbetreiber), Autoren bereitgestellt für die Möglichkeit, es in normalen (Vanilla-)Kubernetes-Installationen zu installieren/zu verwenden.

Die OpenShift-Konsole befindet sich schon seit langem in der Entwicklung und hat daher viele Funktionen integriert. Wir werden die wichtigsten erwähnen:

  • Shared-Interface-Ansatz – zwei „Perspektiven“ der in der Konsole verfügbaren Möglichkeiten: für Administratoren und für Entwickler. Modus Entwicklerperspektive Gruppiert Objekte in einer für Entwickler verständlicheren Form (nach Anwendungen) und konzentriert die Benutzeroberfläche auf die Lösung typischer Aufgaben wie die Bereitstellung von Anwendungen, die Verfolgung des Build-/Bereitstellungsstatus und sogar die Bearbeitung von Code über Eclipse Che.
  • Verwaltung von Workloads, Netzwerk, Speicher, Zugriffsrechten.
  • Logische Trennung der Workloads in Projekte und Anwendungen. In einer der neuesten Versionen – v4.3 – erschienen speziell Projekt-Dashboard, das die üblichen Daten (Anzahl und Status von Bereitstellungen, Pods usw.; Ressourcenverbrauch und andere Metriken) in einem Projektabschnitt anzeigt.
  • In Echtzeit aktualisierte Anzeige des Zustands des Clusters und der darin aufgetretenen Änderungen (Ereignisse); Protokolle ansehen.
  • Sehen Sie sich Überwachungsdaten basierend auf Prometheus, Alertmanager und Grafana an.
  • Management der vertretenen Betreiber BetreiberHub.
  • Verwalten Sie Builds, die über Docker ausgeführt werden (aus einem angegebenen Repository mit einer Docker-Datei). S2I oder beliebige externe Dienstprogramme.

NB: Wir haben keine weiteren zum Vergleich hinzugefügt Kubernetes-Distributionen (zum Beispiel das viel weniger bekannte Kubesphäre): Trotz der Tatsache, dass die GUI in ihnen sehr fortgeschritten sein kann, ist sie normalerweise Teil des integrierten Stacks eines großen Systems. Wenn Sie jedoch der Meinung sind, dass es nicht genügend Lösungen gibt, die in der Vanilla K8s-Installation vollständig funktionieren, teilen Sie uns dies in den Kommentaren mit.

Bonus

1. Portainer auf Kubernetes in der Beta

  • Webseite;
  • Repository (~100 GitHub-Sterne);
  • Lizenz: Zlib(?) (Gleiches gilt für das übergeordnete Projekt).

Ein Projekt des Portainer-Teams, das die beliebte gleichnamige Schnittstelle für die Arbeit mit Docker entwickelt hat. Da sich das Projekt in einem frühen Entwicklungsstadium befindet (die erste und einzige Beta-Version). kam heraus 16. April 2020) haben wir die Funktionen nicht bewertet. Es könnte jedoch für viele von Interesse sein: Wenn es um Sie geht, verfolgen Sie die Entwicklung.

2. IcePanel

  • Webseite;
  • Lizenz: proprietär;
  • Kurz gesagt: „Visual Kubernetes Editor“.

Übersicht über GUIs für Kubernetes

Diese junge Desktop-Anwendung zielt darauf ab, Kubernetes-Ressourcen in Echtzeit mit einer einfachen Drag & Drop-Oberfläche zu visualisieren und zu verwalten. Derzeit unterstützte Objekte sind Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap und Secret. Bald versprechen sie, Helm zu unterstützen. Die Hauptnachteile sind die Nähe des Codes (es wird erwartet). „in gewisser Weise“ öffnen) und die fehlende Linux-Unterstützung (bisher sind nur Versionen für Windows und macOS verfügbar, obwohl dies höchstwahrscheinlich auch nur eine Frage der Zeit ist).

3.k9s

  • Webseite;
  • Demonstration;
  • Repository (~7700 GitHub-Sterne);
  • Lizenz: Apache 2.0;
  • Kurz gesagt: „Eine Konsolenschnittstelle für Kubernetes, mit der Sie Ihren Cluster stilvoll verwalten können.“

Übersicht über GUIs für Kubernetes

Das Dienstprogramm war nur im Bonusteil der Rezension enthalten, da es eine Konsolen-GUI bietet. Die Autoren haben jedoch buchstäblich das Maximum aus dem Terminal herausgeholt und nicht nur eine benutzerfreundliche Oberfläche, sondern auch sechs vordefinierte Themen und ein fortschrittliches System von Tastaturkürzeln und Befehlsaliasen angeboten. Ihr sorgfältiger Ansatz beschränkte sich nicht nur auf das Erscheinungsbild: Die Funktionen von k6 sind angenehm beeindruckend: Ressourcenverwaltung, Anzeige des Status des Clusters, Anzeige von Ressourcen in einer hierarchischen Darstellung mit Abhängigkeiten, Anzeige von Protokollen, RBAC-Unterstützung, Erweiterung der Funktionen durch Plugins ... All dies gefiel An die breite K9s-Community: Die Anzahl der GitHub-Stars des Projekts ist fast so gut wie das offizielle Kubernetes-Dashboard!

4. Anwendungskontrollfelder

Und am Ende der Rezension – eine eigene Mini-Kategorie. Es umfasste zwei Webschnittstellen, die nicht für die umfassende Verwaltung von Kubernetes-Clustern, sondern für die Verwaltung der darin bereitgestellten Inhalte konzipiert waren.

Wie Sie wissen, ist Helm eines der ausgereiftesten und am weitesten verbreiteten Tools für die Bereitstellung komplexer Anwendungen in Kubernetes. Im Laufe seines Bestehens wurden viele Pakete (Helm-Charts) für eine einfache Bereitstellung angesammelt viele beliebte Anwendungen. Daher ist das Erscheinen geeigneter visueller Tools, mit denen Sie den Lebenszyklus von Diagrammen verwalten können, durchaus logisch.

4.1. Monokular

  • Repository (1300+ GitHub-Sterne);
  • Lizenz: Apache 2.0;
  • Kurz gesagt: „Eine Webanwendung zum Suchen und Entdecken von Helm-Charts über mehrere Repositorys hinweg.“ Dient als Grundlage für das Helm-Hub-Projekt.“

Übersicht über GUIs für Kubernetes

Diese Entwicklung der Autoren von Helm wird in Kubernetes installiert und arbeitet innerhalb desselben Clusters und führt die Aufgabe aus. Derzeit ist das Projekt jedoch kaum entwickelt. Sein Hauptzweck besteht darin, die Existenz des Helm Hubs zu unterstützen. Für andere Bedürfnisse empfehlen die Autoren Kubeapps (siehe unten) oder Red Hat Automation Broker (Teil von OpenShift, aber ebenfalls nicht mehr weiterentwickelt).

4.2. Kubeapps

Übersicht über GUIs für Kubernetes

Ein Produkt von Bitnami, das ebenfalls in einem Kubernetes-Cluster installiert wird, sich jedoch von Monocular durch den anfänglichen Fokus auf die Arbeit mit privaten Repositories unterscheidet.

Hauptfunktionen und Features von Kubeapps:

  • Sehen Sie sich Helm-Charts aus Repositorys an und installieren Sie sie.
  • Überprüfen, aktualisieren und entfernen Sie Helm-basierte Anwendungen, die auf dem Cluster installiert sind.
  • Unterstützung für benutzerdefinierte und private Diagramm-Repositories (unterstützt ChartMuseum und JFrog Artifactory).
  • Anzeigen und Arbeiten mit externen Services – aus dem Servicekatalog und den Service Brokern.
  • Veröffentlichen installierter Anwendungen mithilfe des Service Catalog Bindings-Mechanismus.
  • Unterstützung für Authentifizierung und Rechtetrennung mittels RBAC.

Abschlusstisch

Nachfolgend finden Sie eine Übersichtstabelle, in der wir versucht haben, die Hauptmerkmale vorhandener visueller Schnittstellen zusammenzufassen und zusammenzufassen, um den Vergleich zu erleichtern:

Übersicht über GUIs für Kubernetes
(Online-Version der Tabelle verfügbar auf Google Docs.)

Abschluss

GUIs für Kubernetes sind eine eher spezifische und junge Nische. Es entwickelt sich jedoch sehr aktiv: Es ist bereits möglich, sowohl recht ausgereifte als auch sehr junge Lösungen zu finden, die noch Raum für Wachstum haben. Sie decken eine Vielzahl von Anwendungen ab und bieten Funktionen und Optik für nahezu jeden Geschmack. Wir hoffen, dass dieser Test Ihnen bei der Auswahl des Tools hilft, das Ihren aktuellen Anforderungen am besten entspricht.

PS

Danke kvaps für die Daten auf der OpenShift Console für die Vergleichstabelle!

Lesen Sie auch auf unserem Blog:

Source: habr.com

Kommentar hinzufügen