
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 für Kubernetes, zeitgleich mit der Ankündigung der Webschnittstelle . 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 Der Vollständigkeit halber sind jedoch die relevanten Optionen daraus (K8Dash, Octant, Kubernetes Web View) in der Abschlusstabelle enthalten.
1. Kubernetes-Dashboard
- ;
- (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.“

Dies ist ein Allzweck-Panel, das von den Kubernetes-Autoren in der offiziellen Dokumentation behandelt wird (Aber 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 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 22. Mai 2020 – Auf Kompatibilität mit Kubernetes 1.18 getestet.
2. Objektiv
- ;
- ;
- (~4800 GitHub-Sterne);
- Lizenz: MIT;
- Kurz gesagt: „Kubernetes IDE“.

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:
- Eine eigenständige Anwendung, die keine Installation innerhalb des Clusters erfordert (genauer gesagt: Prometheus wird benötigt, um alle Metriken zu erfassen, aber eine bestehende Installation kann dafür verwendet werden). Die „Hauptinstallation“ erfolgt auf einem PC unter folgendem Betriebssystem: 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 - vom 16. Juni 2020 Ursprünglich von Kontena erstellt, wurde heute das gesamte geistige Eigentum an eine spezielle Organisation übertragen , 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
- ;
- ;
- (200+ GitHub-Sterne);
- Lizenz: proprietär;
- Kurzum: „Clustermanagement leicht gemacht.“

Dies ist eine proprietäre Anwendung, die auf einem PC installiert wird (unterstützt). Linux, macOS, WindowsDie Entwickler versprechen einen vollständigen Ersatz für das Kommandozeilenprogramm, wodurch das Merken von Befehlen überflüssig wird und die Arbeitsgeschwindigkeit sogar um das Zehnfache gesteigert werden kann.
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
- ;
- ;
- (~500 GitHub-Sterne);
- Lizenz: Apache 2.0
- Kurz gesagt: „Kubevious macht Kubernetes-Cluster, Anwendungskonfiguration und Statusanzeige sicher und leicht verständlich.“

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 worüber wir .)
- 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, montierendocker.sockund 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 ( 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
- ;
- Lizenz: proprietär (wird Open Source);
- Kurz gesagt: „Ein einfacher Multiplattform-Client 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 (unterstützt) Linux, macOS и Windows) und erfordert kubectl mindestens in Version 1.14.0.
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 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
- ;
- (~150 GitHub-Sterne);
- Lizenz: Apache 2.0;
- Kurz gesagt: „UI für OpenShift-Cluster“.

Obwohl dieses Webinterface Teil der OpenShift-Distribution ist (es wird dort mit installiert). ), Autoren 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 – 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 .
- Verwalten Sie Builds, die über Docker ausgeführt werden (aus einem angegebenen Repository mit einer Docker-Datei). oder beliebige externe Dienstprogramme.
NB: Wir haben keine weiteren zum Vergleich hinzugefügt Kubernetes-Distributionen (zum Beispiel das viel weniger bekannte ): 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
- ;
- (~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). 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
- ;
- Lizenz: proprietär;
- Kurz gesagt: „Visual Kubernetes Editor“.

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). und mangelnde Unterstützung Linux (vorerst sind nur Versionen verfügbar) Windows и macOS(wobei dies höchstwahrscheinlich auch nur eine Frage der Zeit ist).
3.k9s
- ;
- ;
- (~7700 GitHub-Sterne);
- Lizenz: Apache 2.0;
- Kurz gesagt: „Eine Konsolenschnittstelle für Kubernetes, mit der Sie Ihren Cluster stilvoll verwalten können.“

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 . Daher ist das Erscheinen geeigneter visueller Tools, mit denen Sie den Lebenszyklus von Diagrammen verwalten können, durchaus logisch.
4.1. Monokular
- (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.“

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
- ;
- ;
- (~2100 GitHub-Sterne);
- Lizenz: Apache 2.0
- Kurz gesagt: „Ihr Anwendungs-Dashboard 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:
(Online-Version der Tabelle .)
Fazit
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 für die Daten auf der OpenShift Console für die Vergleichstabelle!
Lesen Sie auch auf unserem Blog:
- «";
- «";
- «";
- «".
Source: habr.com
