Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Notiz. übersetzen: Der Autor des Originalmaterials ist Henning Jacobs von Zalando. Er hat eine neue Weboberfläche für die Arbeit mit Kubernetes erstellt, die als „kubectl for the web“ positioniert ist. Warum ein neues Open-Source-Projekt entstand und welche Kriterien bestehende Lösungen nicht erfüllten – lesen Sie seinen Artikel.

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

In diesem Beitrag bewerte ich die verschiedenen Open-Source-Webschnittstellen von Kubernetes, lege meine Anforderungen an eine universelle Benutzeroberfläche dar und erkläre, warum ich sie entwickelt habe Kubernetes WebView – eine Schnittstelle, die die gleichzeitige Unterstützung und Fehlerbehebung mehrerer Cluster erleichtert.

Anwendungsfälle

Bei Zalando bedienen wir eine große Anzahl von Kubernetes-Benutzern (900+) und Cluster (100+). Es gibt einige häufige Anwendungsfälle, die von einem dedizierten Web-Tool profitieren würden:

  1. Kommunikation mit Kollegen zur Unterstützung;
  2. Auf Vorfälle reagieren und deren Ursachen untersuchen.

Unterstützen

Meiner Erfahrung nach sehen Support-Kommunikationen oft so aus:

— Hilfe, unser Dienst XYZ ist nicht verfügbar!
— Was siehst du, wenn du auftrittst? kubectl describe ingress ...?

Oder etwas Ähnliches für CRD:

— Ich habe ein Problem mit dem Identifizierungsdienst...
— Was bewirkt der Befehl? kubectl describe platformcredentialsset ...?

Bei einer solchen Kommunikation geht es normalerweise darum, verschiedene Variationen des Befehls einzugeben kubectl um das Problem zu identifizieren. Dadurch sind beide Gesprächspartner gezwungen, ständig zwischen Terminal und Webchat zu wechseln und beobachten eine andere Situation.

Daher möchte ich, dass das Kubernetes-Web-Frontend Folgendes ermöglicht:

  • Benutzer könnten Links austauschen und beobachte dasselbe;
  • würde helfen Vermeiden Sie menschliche Fehler zur Unterstützung: z. B. Anmeldung beim falschen Cluster in der Befehlszeile, Tippfehler in CLI-Befehlen usw.;
  • würde erlauben Generieren Sie Ihre eigenen Ansichten an Kollegen senden, d. h. Spalten mit Tags hinzufügen, viele Arten von Ressourcen auf einer Seite anzeigen;
  • Idealerweise sollte Ihnen dieses Web-Tool die Einstellung ermöglichen „tiefe“ Links zu bestimmten Abschnitten von YAML (z. B. Hinweis auf einen falschen Parameter, der Fehler verursacht).

Reaktion und Analyse auf Vorfälle

Die Reaktion auf Infrastrukturvorfälle erfordert Situationsbewusstsein, die Fähigkeit, Auswirkungen einzuschätzen und nach Mustern in Clustern zu suchen. Einige Beispiele aus dem wirklichen Leben:

  • Ein wichtiger Produktionsdienst hat Probleme und Sie müssen dies tun Finden Sie alle Kubernetes-Ressourcen nach Namen in allen Clusternzur Fehlerbehebung;
  • Knoten beginnen beim Skalieren zu fallen und Sie benötigen Finden Sie alle Pods mit dem Status „Ausstehend“ in allen Clusternum den Umfang des Problems einzuschätzen;
  • Einzelne Benutzer melden ein Problem mit DaemonSet, das in allen Clustern bereitgestellt wird, und müssen es herausfinden Ist das Problem total?.

Meine Standardlösung in solchen Fällen ist so etwas wie for i in $clusters; do kubectl ...; done. Offensichtlich ist es möglich, ein Tool zu entwickeln, das ähnliche Funktionen bietet.

Vorhandene Kubernetes-Webschnittstellen

Die Open-Source-Welt der Webschnittstellen zu Kubernetes ist nicht sehr groß*, daher habe ich versucht, weitere Informationen zu sammeln Twitter:

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

*Meine Erklärung für die begrenzte Anzahl an Webschnittstellen für Kubernetes: Cloud-Dienste und Kubernetes-Anbieter bieten in der Regel ihre eigenen Frontends an, sodass der Markt für „gute“ kostenlose Kubernetes-UI relativ klein ist.

Durch einen Tweet habe ich davon erfahren K8Dash, Kubernator и Oktant. Schauen wir uns sie und andere bestehende Open-Source-Lösungen an und versuchen wir zu verstehen, was sie sind.

K8Dash

„K8Dash ist die einfachste Möglichkeit, einen Kubernetes-Cluster zu verwalten.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

K8Dash Sieht gut aus und fühlt sich schnell an, hat aber für die oben aufgeführten Anwendungsfälle eine Reihe von Nachteilen:

  • Funktioniert nur innerhalb der Grenzen eines Clusters.
  • Sortieren und Filtern sind möglich, verfügen jedoch nicht über Permalinks.
  • Es gibt keine Unterstützung für benutzerdefinierte Ressourcendefinitionen (CRDs).

Kubernator

„Kubernator ist eine alternative Benutzeroberfläche für Kubernetes. Im Gegensatz zum übergeordneten Kubernetes-Dashboard bietet es eine Steuerung auf niedriger Ebene und eine hervorragende Sichtbarkeit aller Objekte im Cluster mit der Möglichkeit, neue Objekte zu erstellen, zu bearbeiten und Konflikte zu lösen. Da es sich um eine vollständig clientseitige Anwendung handelt (wie kubectl), ist außer dem Kubernetes-API-Server selbst kein Backend erforderlich, und außerdem werden die Cluster-Zugriffsregeln beachtet.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Das ist eine ziemlich genaue Beschreibung Kubernator. Leider fehlen einige Funktionen:

  • Bedient nur einen Cluster.
  • Es gibt keinen Listenansichtsmodus (d. h. Sie können nicht alle Pods mit dem Status „Ausstehend“ anzeigen).

Kubernetes-Dashboard

„Kubernetes Dashboard ist eine universelle Webschnittstelle für Kubernetes-Cluster. Es ermöglicht Benutzern, in einem Cluster ausgeführte Anwendungen zu verwalten und Fehler zu beheben sowie den Cluster selbst zu verwalten.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Leider ist die Kubernetes-Dashboard hilft bei meinen Support- und Incident-Response-Aktivitäten nicht wirklich, weil es:

  • es gibt keine permanenten Links, beispielsweise wenn ich Ressourcen filtere oder die Sortierreihenfolge ändere;
  • Es gibt keine einfache Möglichkeit, nach Status zu filtern. Sehen Sie sich beispielsweise alle Pods mit dem Status „Ausstehend“ an.
  • Es wird nur ein Cluster unterstützt.
  • CRDs werden nicht unterstützt (diese Funktion befindet sich in der Entwicklung);
  • Keine benutzerdefinierten Spalten (z. B. nach Typ beschriftete Spalten). kubectl -L).

Kubernetes-Betriebsansicht (kube-ops-view)

„System Dashboard Observer für K8s Cluster Space.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

У Kubernetes-Betriebsansicht Ein völlig anderer Ansatz: Dieses Tool zeigt nur Clusterknoten und Pods mithilfe von WebGL an, ohne textuelle Objektdetails. Es eignet sich hervorragend für einen schnellen Überblick über den Zustand des Clusters (fallen Pods aus?)*, ist jedoch nicht für die oben beschriebenen Support- und Incident-Response-Anwendungsfälle geeignet.

* Notiz. übersetzen: In diesem Sinne könnte Sie auch unser Plugin interessieren grafana-statusmap, worüber wir ausführlicher gesprochen haben Dieser Artikel.

Kubernetes-Ressourcenbericht (kube-resource-report)

„Erfassen Sie Pod- und Kubernetes-Cluster-Ressourcenanforderungen, vergleichen Sie sie mit dem Ressourcenverbrauch und generieren Sie statisches HTML.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Kubernetes-Ressourcenbericht generiert statische HTML-Berichte zur Ressourcennutzung und Kostenverteilung zwischen Teams/Anwendungen in Clustern. Der Bericht ist für den Support und die Reaktion auf Vorfälle einigermaßen nützlich, da er Ihnen ermöglicht, schnell den Cluster zu finden, in dem die Anwendung bereitgestellt wird.

Notiz. übersetzen: Ein Dienst und ein Tool können auch nützlich sein, um Informationen über die Zuweisung von Ressourcen und deren Kosten zwischen Cloud-Anbietern anzuzeigen Kubekosten, die wir überprüfen kürzlich veröffentlicht.

Oktant

„Eine erweiterbare Webplattform für Entwickler, die ein besseres Verständnis der Komplexität von Kubernetes-Clustern vermitteln soll.“

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Oktant, erstellt von VMware, ist ein neues Produkt, von dem ich erst vor relativ kurzer Zeit erfahren habe. Mit seiner Hilfe ist es bequem, den Cluster auf einem lokalen Computer zu erkunden (es gibt sogar Visualisierungen), aber die Probleme des Supports und der Reaktion auf Vorfälle werden nur in begrenztem Umfang behandelt. Nachteile von Octant:

  • Keine Clustersuche.
  • Funktioniert nur auf dem lokalen Computer (wird nicht in einem Cluster bereitgestellt).
  • Objekte können nicht sortiert/gefiltert werden (nur die Etikettenauswahl wird unterstützt).
  • Sie können keine benutzerdefinierten Spalten angeben.
  • Sie können Objekte nicht nach Namespace auflisten.

Ich hatte auch Probleme mit der Stabilität von Octant mit Zalando-Clustern: auf einigen CRDs er fiel.

Einführung in Kubernetes Web View

„kubectl für das Web“.

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)

Nachdem ich die verfügbaren Schnittstellenoptionen für Kubernetes analysiert hatte, beschloss ich, eine neue zu erstellen: Kubernetes WebView. Schließlich brauche ich einfach die ganze Kraft kubectl im Internet, nämlich:

  • Verfügbarkeit aller (schreibgeschützten) Vorgänge, für die Benutzer lieber kubectl verwenden;
  • Alle URLs müssen dauerhaft sein und die Seite in ihrer ursprünglichen Form darstellen, damit Kollegen sie teilen und in anderen Tools verwenden können.
  • Unterstützung für alle Kubernetes-Objekte, wodurch Sie jede Art von Problem lösen können;
  • Ressourcenlisten sollten für weitere Arbeiten herunterladbar sein (in Tabellenkalkulationen, CLI-Tools wie grep) und Speicherung (z. B. für Obduktionen);
  • Unterstützung für die Auswahl von Ressourcen nach Label (ähnlich wie kubectl get .. -l);
  • die Möglichkeit, kombinierte Listen verschiedener Arten von Ressourcen zu erstellen (ähnlich wie kubectl get all), um unter Kollegen ein gemeinsames operatives Bild zu erhalten (z. B. während einer Reaktion auf einen Vorfall);
  • die Möglichkeit, benutzerdefinierte intelligente Deep-Links zu anderen Tools wie Dashboards, Loggern, Anwendungsregistern usw. hinzuzufügen. um die Fehlerbehebung/Fehlerbehebung und die Reaktion auf Vorfälle zu erleichtern;
  • Das Frontend sollte so einfach wie möglich sein (reines HTML), um zufällige Probleme wie eingefrorenes JavaScript zu vermeiden;
  • Unterstützung mehrerer Cluster, um die Interaktion während der Remote-Beratung zu vereinfachen (z. B. um sich nur eine URL zu merken);
  • Wenn möglich, sollte die Situationsanalyse vereinfacht werden (z. B. mit Links zum Herunterladen von Ressourcen für alle Cluster/Namespaces);
  • zusätzliche Möglichkeiten zum Erstellen flexibler Links und zum Hervorheben von Textinformationen, um beispielsweise Kollegen auf einen bestimmten Abschnitt in der Ressourcenbeschreibung (eine Zeile in YAML) verweisen zu können;
  • die Möglichkeit zur Anpassung an die Anforderungen eines bestimmten Kunden, sodass Sie beispielsweise spezielle Anzeigevorlagen für CRDs und eigene Tabellenansichten erstellen und CSS-Stile ändern können;
  • Tools zur weiteren Erkundung der Befehlszeile (z. B. Anzeigen vollständiger Befehle). kubectl, bereit zum Kopieren);

Über die in Kubernetes Web View gelösten Aufgaben hinaus (Nicht-Ziele) blieb:

  • Abstraktion von Kubernetes-Objekten;
  • Anwendungsmanagement (z. B. Bereitstellungsmanagement, Helm-Charts usw.);
  • Schreibvorgänge (müssen über sichere CI/CD- und/oder GitOps-Tools erfolgen);
  • schöne Benutzeroberfläche (JavaScript, Themes usw.);
  • Visualisierung (vgl kube-ops-ansicht);
  • Kostenanalyse (vgl Kube-Ressourcenbericht).

Wie hilft Kubernetes Web View beim Support und bei der Reaktion auf Vorfälle?

Unterstützen

  • Alle Links sind dauerhaft, was den Informationsaustausch mit Kollegen erleichtert.
  • Sie können erstellen deine IdeenZeigen Sie beispielsweise alle Bereitstellungen und Pods mit einer bestimmten Bezeichnung in zwei bestimmten Clustern an (im Link können mehrere Clusternamen und Ressourcentypen angegeben werden, die durch Kommas getrennt sind).
  • Sie können darauf verweisen bestimmte Zeilen in einer YAML-Datei Objekt, was auf mögliche Probleme in der Objektspezifikation hinweist.

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)
Suche nach Clustern in Kubernetes Web View

Reaktion auf Vorfälle

  • Globale Suche (globale Suche) ermöglicht die Suche nach Objekten in allen Clustern.
  • Listenansichten kann alle Objekte mit einem bestimmten Status/einer bestimmten Spalte in allen Clustern anzeigen (wir müssen beispielsweise alle Pods mit dem Status „Ausstehend“ finden).
  • Objektlisten können heruntergeladen werden im tabulatorgetrennten Wertformat (TSV) zur späteren Analyse.
  • Anpassbare externe Links Ermöglicht den Wechsel zu verwandten Dashboards und anderen Tools.

Ankündigung der Kubernetes Web View (und ein kurzer Überblick über andere Web-UIs für Kubernetes)
Kubernetes Web View: Liste der Pods mit dem Status „Ausstehend“ in allen Clustern

Wenn Sie Kubernetes Web View ausprobieren möchten, empfehle ich Ihnen, einen Blick darauf zu werfen Dokumentation oder anschauen Live-Demo.

Natürlich könnte die Oberfläche besser sein, aber vorerst ist Kubernetes Web View ein Tool für „fortgeschrittene Benutzer“, die nicht davor zurückschrecken, URL-Pfade bei Bedarf manuell zu manipulieren. Wenn Sie Kommentare/Ergänzungen/Vorschläge haben, wenden Sie sich bitte an mit mir auf Twitter!

Dieser Artikel ist eine kurze Geschichte der Hintergründe, die zur Erstellung von Kubernetes Web View führten. Weitere werden folgen! (Notiz. übersetzen: Sie sollten in erwartet werden Blog des Autors.)

PSvom Übersetzer

Lesen Sie auch auf unserem Blog:

Source: habr.com

Kommentar hinzufügen