11 Werkzeuge, die Kubernetes verbessern

11 Werkzeuge, die Kubernetes verbessern

Nicht alle Serverplattformen, selbst die leistungsfähigsten und skalierbarsten, erfüllen alle Bedürfnisse in ihrer Grundform. Obwohl Kubernetes alleine ausgezeichnet funktioniert, fehlen möglicherweise wichtige Komponenten für die Vollständigkeit. Sie werden immer einen speziellen Anwendungsfall finden, der Ihre Anforderungen ignoriert oder bei dem Kubernetes mit der Standardinstallation nicht funktioniert – zum Beispiel Datenbankunterstützung oder Continuous Deployment.

Hier kommen Ergänzungen, Erweiterungen und andere nützliche Dinge für diesen Container-Orchestrator ins Spiel, die von einer sehr aktiven Gemeinschaft unterstützt werden. In diesem Artikel präsentieren wir Ihnen 11 der besten Dinge, die wir gefunden haben. Uns selbst in Southbridge sie sind durchaus interessant, und wir planen, uns damit praktisch auseinanderzusetzen – sie bis ins Detail zu zerlegen und zu sehen, was im Inneren steckt. Einige von ihnen ergänzen jeden Kubernetes-Cluster perfekt, andere helfen, spezifische Aufgaben zu lösen, die in der Standardausstattung von Kubernetes nicht umgesetzt sind.

Gatekeeper: Verwaltung von Richtlinien

Projekt Open Policy Agent (OPA) ermöglicht die Erstellung von Richtlinien über Cloud-Anwendungsstacks in Kubernetes, vom Ingress bis zum Service-Mesh. Gatekeeper bietet eine native Möglichkeit für Kubernetes, Richtlinien im Cluster automatisch durchzusetzen und überprüft alle Ereignisse oder Ressourcen, die gegen die Richtlinie verstoßen. All dies wird durch einen relativ neuen Kubernetes-Mechanismus, den Webhook-Zugangsmanager, der bei Änderungen an Ressourcen ausgelöst wird, verarbeitet. Mit Gatekeeper werden OPA-Richtlinien zu einem weiteren Bestandteil des Zustands Ihres Kubernetes-Clusters, ohne dass eine ständige Überwachung erforderlich ist.

Gravity: Tragbare Kubernetes-Cluster

Wenn Sie eine Anwendung in Kubernetes bereitstellen möchten, haben viele Anwendungen ein Helm-Chart, das diesen Prozess steuert und automatisiert. Aber was, wenn Sie Ihren Kubernetes-Cluster „so wie er ist“ nehmen und ihn anderswo ausrollen möchten?

Gravity erstellte Snapshots des Zustands von Kubernetes-Clustern, deren Registry für Container-Images sowie laufenden Anwendungen, die als „Anwendungspakete“ bezeichnet werden. Ein solches Paket, das eine gewöhnliche Datei ist .tar, kann einen Cluster überall replizieren, wo Kubernetes betrieben werden kann.

Gravity überprüft auch, ob die Zielinfrastruktur sich ähnlich verhält wie die Ausgangsinfrastruktur und ob die Kubernetes-Umgebung auf dem Ziel zugänglich ist. Die kostenpflichtige Version von Gravity fügt außerdem Sicherheitsfunktionen hinzu, einschließlich RBAC und der Möglichkeit, Sicherheitseinstellungen über verschiedene Cluster-Deployments hinweg zu synchronisieren.

Die neueste Hauptversion, Gravity 7, kann ein Gravity-Image in einem bestehenden Kubernetes-Cluster bereitstellen, anstatt einen vollständig neuen Cluster aus dem Image zu erstellen. Gravity 7 kann auch mit Clustern arbeiten, die ohne Verwendung eines Gravity-Images installiert wurden. Außerdem unterstützt Gravity SELinux und funktioniert nativ mit dem Teleport SSH-Gateway.

Kaniko: Container-Builds im Kubernetes-Cluster

Die meisten Container-Images werden auf Systemen außerhalb des Container-Stacks erstellt. Manchmal muss jedoch ein Image innerhalb des Container-Stacks erstellt werden, beispielsweise in einem laufenden Container oder in einem Kubernetes-Cluster.

Kaniko führt den Containerbau innerhalb einer Containerumgebung durch, jedoch ohne von einem Containerisierungsdienst wie Docker abhängig zu sein. Stattdessen extrahiert Kaniko das Dateisystem aus dem Basis-Image, führt alle Build-Befehle im Benutzerraum über das extrahierte Dateisystem aus und macht nach jedem Befehl einen Snapshot des Dateisystems.

Hinweis: Kaniko kann derzeit (Mai 2020, Anm. des Übersetzers) keine Windows-Container erstellen.

Kubecost: Kostenparameter für den Start von Kubernetes

Die meisten Kubernetes-Administrationswerkzeuge zielen auf Benutzerfreundlichkeit, Monitoring, Verständnis des Verhaltens innerhalb von Pods usw. ab. Aber wie sieht es mit der Beobachtung der Kosten — in Rubel und Kopeken — aus, die mit dem Betrieb von Kubernetes verbunden sind?

Kubecost verarbeitet Kubernetes-Parameter in Echtzeit, was zu aktuellen Informationen über die Kosten von laufenden Clustern bei führenden Cloud-Anbietern führt, die auf einem Dashboard mit den monatlichen Kosten jedes Clusters angezeigt werden. Die Preise für Arbeitsspeicher, CPU-Zeit, GPU und SpeicherSubsystem werden nach Kubernetes-Komponenten (Container, Pod, Dienst usw.) aufgeschlüsselt.

Kubecost verfolgt auch die Kosten für externe Ressourcen, wie Amazon S3 Buckets, obwohl diese auf AWS beschränkt sind. Die Kostendaten können an Prometheus gesendet werden, sodass Sie sie zur programmatischen Steuerung des Clusterverhaltens verwenden können.

Kubecost ist kostenlos in der Nutzung, wenn Sie mit den Daten der Logs von 15 Tagen auskommen. Für zusätzliche Funktionen beginnen die Preise bei 199 $ monatlich für das Monitoring von 50 Knoten.

KubeDB: Betrieb von Produktionsdatenbanken in Kubernetes

Datenbanken sind ebenfalls recht schwierig effektiv in Kubernetes zu betreiben. Sie finden Kubernetes-Operatoren für MySQL, PostgreSQL, MongoDB und Redis, aber alle haben ihre Nachteile. Auch der Standardfunktionsumfang von Kubernetes löst die meisten spezifischen Datenbankprobleme nicht direkt.

KubeDB hilft Ihnen, Ihre eigenen Kubernetes-Operatoren zur Verwaltung von Datenbanken zu erstellen. Backup, Klonen, Monitoring, Snapshots und deklariertes Erstellen von Datenbanken sind seine Bestandteile. Beachten Sie, dass die Unterstützung von Funktionen von der Datenbank abhängt. Zum Beispiel funktioniert das Erstellen eines Clusters für PostgreSQL, nicht aber für MySQL (bereits gibt es, wie korrekt festgestellt dnbstd, Anm. des Übersetzers).

Kube-monkey: Chaos Monkey für Kubernetes

Die sicherste Methode zum Stresstest wird als zufälliges Ausfallen angesehen. Diese Theorie liegt dem Chaos Monkey von Netflix zugrunde, einem chaotischen Ingenieurtool, das zufällig virtuelle Maschinen und Produktionscontainer herunterfährt, um die Entwickler zu "motivieren", robustere Systeme zu schaffen. Kube-monkey ist eine Umsetzung derselben grundlegenden Stress-Test-Theorie für Kubernetes-Cluster. Er funktioniert, indem er zufällig von Ihnen festgelegte Module im Cluster killt und kann auch so konfiguriert werden, dass er in bestimmten Zeitintervallen arbeitet.

Kubernetes Ingress Controller für AWS

Kubernetes bietet einen externen Lastenausgleich und Netzwerkdienste des Clusters über einen als Ingress bezeichneten Dienst an. Der Kubernetes Ingress Controller für AWS schließt diese Lücke.

Es verwaltet automatisch die AWS-Ressourcen für jedes Ingress-Objekt im Cluster, erstellt Lastenausgleichsgeräte für neue Ingress-Ressourcen und entfernt Lastenausgleichsgeräte, wenn Ressourcen gelöscht werden. Es nutzt CloudFormation, um sicherzustellen, dass der Zustand des Clusters intakt bleibt. Es unterstützt auch die Einstellungen für CloudWatch Alarm und verwaltet automatisch andere Elemente, die im Cluster verwendet werden, wie z. B. SSL-Zertifikate und EC2 Auto Scaling Groups.

Kubespray: Automatische Installation von Kubernetes

Kubespray automatisiert die Installation eines für den produktiven Einsatz bereitgestellten Kubernetes-Clusters, beginnend mit der Installation auf „Bare Metal“-Servern bis hin zu großen öffentlichen Clouds. Es verwendet Ansible (Vagrant zusätzlich), um das Deployment zu starten und einen hochverfügbaren Cluster von Grund auf mit dem von Ihnen gewählten Netzwerk-Addon (z. B. Flannel, Calico und andere) auf der von Ihnen gewählten beliebten Linux-Distribution bei der Installation auf „Bare Metal“-Servern zu erstellen.

Skaffold: Iterative Entwicklung für Kubernetes

Skaffold – ein von Google entwickeltes Tool, das zur Organisation von CI/CD-Anwendungen in Kubernetes verwendet wird. Sobald Sie Änderungen am Quellcode vornehmen, erkennt Skaffold dies automatisch, startet den Build und das Deployment und warnt Sie, falls es Fehler gibt. Skaffold wird vollständig auf der Client-Seite ausgeführt, daher kann es bei der Installation oder Aktualisierung kleine Nuancen geben. Es kann mit bestehenden CI/CD-Pipelines verwendet werden und auch mit einigen externen Build-Tools, hauptsächlich Bazel von Google, interagieren.

Teresa: Einfachste PaaS auf Kubernetes

Teresa ist ein Anwendung Deployment-System, das eine einfachste PaaS über Kubernetes bietet. Benutzer, die in Teams aufgeteilt sind, können ihre eigenen Anwendungen bereitstellen und verwalten. Dies erleichtert den Benutzern, die diesem Dienst vertrauen und nicht mit Kubernetes und seinen Komplexitäten umgehen möchten, die Arbeit.

Tilt: Streaming-Updates von Containern zu Kubernetes-Clustern

Tilt, entwickelt von Windmill Engineering, überwacht die Änderungen verschiedener Dockerfile-Dateien und implementiert dann schrittweise die entsprechenden Container im Kubernetes-Cluster. Im Grunde ermöglicht es, ein Produktionscluster in Echtzeit zu aktualisieren, indem einfach die Dockerfile-Dateien aktualisiert werden. Tilt führt die Build-Prozesse innerhalb des Clusters durch, wobei der Quellcode alles ist, was verändert werden muss. Sie können auch einen Snapshot des Clusterzustands erstellen und Fehlerbedingungen direkt aus Tilt festhalten, um sie mit Teammitgliedern für Debugging-Zwecke zu teilen.

P.S. All diese Werkzeuge haben wir mehrfach in Southbridge unseren neugierigen Händen getestet. Um echte Praktiken schon bald (hoffentlich!) bei Offline-Intensivkursen im Februar vorzustellen. Kubernetes Basis 8–10 Februar 2021. Und Kubernetes Mega 12–14 Februar. Ehrlich gesagt, haben wir auch die warme und energetisch aufgeladene Atmosphäre der Offline-Schulungen vermisst. Welche auch immer die fortschrittlichsten Technologien sein mögen, sie können die lebendige menschliche Kommunikation und die besondere Atmosphäre nicht ersetzen, wenn Gleichgesinnte zusammenkommen.

Quelle: habr.com

60GB SSD 8Gb DDR4