
Nicht alle Serverplattformen, selbst die leistungsstärksten und skalierbarsten, erfüllen alle Anforderungen in ihrer Grundform. Auch wenn Kubernetes hervorragend funktioniert, könnten ihm bestimmte Komponenten fehlen, um vollständig zu sein. Es gibt immer spezielle Fälle, die Ihre Bedürfnisse ignorieren oder in denen Kubernetes bei der Standardinstallation nicht optimal funktioniert – zum Beispiel bei der Datenbankunterstützung oder beim Continuous Deployment.
Hier kommen Ergänzungen, Erweiterungen und andere nützliche Tools für diesen Container-Orchestrator ins Spiel, unterstützt von einer breiten Community. In diesem Artikel präsentieren wir die 11 besten Dinge, die wir gefunden haben. Wir selbst sind sehr daran interessiert und planen, sie praktisch zu erkunden – auf die einzelnen Teile zu zerlegen und zu sehen, was sich im Inneren verbirgt. Einige davon werden jedes Kubernetes-Cluster hervorragend ergänzen, während andere spezifische Aufgaben lösen, die in der Standardversion von Kubernetes nicht umgesetzt sind.
Gatekeeper: Verwaltung von Richtlinien
Projekt (OPA) ermöglicht die Erstellung von Richtlinien über Cloud-Anwendungsstacks in Kubernetes, beginnend bei Ingress und endend bei Service Mesh. bietet eine native Möglichkeit für Kubernetes, Richtlinien im Cluster automatisch durchzusetzen und überprüft alle Ereignisse oder Ressourcen, die gegen die Richtlinien verstoßen. Dies geschieht über einen relativ neuen Mechanismus von Kubernetes, den Webhook-Zugriff-Controller, der bei Änderungen an Ressourcen aktiviert wird. Mit Gatekeeper werden OPA-Richtlinien zu einem weiteren Teil 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, verfügen viele Anwendungen über ein Helm-Chart, das diesen Prozess lenkt und automatisiert. Aber was, wenn Sie Ihren Kubernetes-Cluster „so wie er ist“ nehmen und irgendwo anders einsetzen möchten?
macht Schnappschüsse des Zustands von Kubernetes-Clustern, ihrer Registries für Container-Images und der ausgeführten Anwendungen, die als „Anwendungspakete“ bezeichnet werden. Ein solches Paket, das eine normale Datei darstellt .tar, kann den Cluster überall replizieren, wo Kubernetes betrieben werden kann.
Gravity überprüft auch, ob die Zielinfrastruktur sich genauso verhält wie die ursprüngliche und ob die Kubernetes-Umgebung auf dem Ziel verfügbar ist. Die kostenpflichtige Version von Gravity fügt außerdem Sicherheitsfunktionen hinzu, einschließlich RBAC und der Möglichkeit, Sicherheitseinstellungen über verschiedene Clusterbereitstellungen hinweg zu synchronisieren.
Die neueste Hauptversion, Gravity 7, kann ein Gravity-Image in ein bestehendes Kubernetes-Cluster bereitstellen, anstatt ein komplett neues Cluster aus dem Image zu erstellen. Gravity 7 kann auch mit Clustern arbeiten, die ohne Verwendung des Gravity-Images installiert wurden. Außerdem unterstützt Gravity SELinux und funktioniert nativ mit dem Teleport SSH-Gateway.
Kaniko: Container-Bau im Kubernetes-Cluster
Die meisten Container-Images werden auf Systemen außerhalb des Container-Stacks erstellt. Manchmal ist es jedoch notwendig, ein Image innerhalb des Container-Stacks zu erstellen, beispielsweise irgendwo in einem laufenden Container oder in einem Kubernetes-Cluster.
stellt den Aufbau von Containern innerhalb einer Container-Umgebung sicher, 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 Benutzermodus über das extrahierte Dateisystem aus und nimmt nach jedem Befehl einen Snapshot des Dateisystems.
Hinweis: Kaniko kann derzeit (Mai 2020) Anm. der Übersetzerkeine Windows-Container erstellen.
Kubecost: Kostenparameter für den Betrieb von Kubernetes
Die meisten Kubernetes-Verwaltungstools konzentrieren sich auf Benutzerfreundlichkeit, Monitoring und das Verständnis des Verhaltens innerhalb von Pods usw. Aber wie steht es um die Beobachtung der Kosten — in Euro und Cent — die mit dem Betrieb von Kubernetes verbunden sind?
verarbeitet die Kubernetes-Parameter in Echtzeit, was zu Informationen über die aktuellen Kosten der laufenden Cluster bei den wichtigsten Cloud-Anbietern führt, die auf einem Dashboard mit den monatlichen Kosten jedes Clusters angezeigt werden. Die Preise für RAM, CPU, GPU und Speichersystem sind nach Kubernetes-Komponenten (Container, Pod, Dienst usw.) aufgeschlüsselt.
Kubecost verfolgt auch die Kosten von Ressourcen außerhalb des Clusters, wie z.B. Amazon S3 Buckets, wobei dies auf AWS beschränkt ist. Die Kostendaten können an Prometheus gesendet werden, sodass Sie sie zur programmgesteuerten Anpassung des Verhaltens des Clusters nutzen können.
Kubecost ist kostenlos, wenn Ihnen die Protokolldaten der letzten 15 Tage ausreichen. Für erweiterte Funktionen beginnen die Preise bei 199 € pro Monat für die Überwachung von 50 Knoten.
KubeDB: Produktionsdatenbanken in Kubernetes betreiben
Es ist ebenfalls ziemlich herausfordernd, Datenbanken effizient in Kubernetes zu betreiben. Sie finden Kubernetes-Operatoren für MySQL, PostgreSQL, MongoDB und Redis, doch alle haben ihre Nachteile. Auch der Standardfunktionsumfang von Kubernetes löst die meisten spezifischen Datenbankprobleme nicht direkt.
hilft Ihnen, Ihre Kubernetes-Operatoren für die Verwaltung von Datenbanken zu erstellen. Backup, Klonen, Überwachung, Snapshots und deklaratives Erstellen von Datenbanken sind Bestandteile davon. Bitte beachten Sie, dass die Unterstützung von Funktionen von der jeweiligen Datenbank abhängt. Zum Beispiel funktioniert das Erstellen eines Clusters für PostgreSQL, jedoch nicht für MySQL ( Sie haben recht damit festgestellt, , Anm. der Übersetzer).
Kube-monkey: Chaos Monkey für Kubernetes
Die zuverlässigsten Methoden des Stresstests sind zufällige Ausfälle. Diese Theorie liegt dem Chaos Monkey von Netflix zugrunde, einem chaotischen Ingenieurt Werkzeug, das willkürlich virtuelle Maschinen und Container in der Produktionsumgebung deaktiviert, um Entwickler dazu zu „animieren“, robustere Systeme zu erstellen. — eine Umsetzung derselben grundlegenden Theorie des Stresstests für Kubernetes-Cluster. Es funktioniert, indem es zufällig Module in dem von Ihnen zugewiesenen Cluster tötet und kann auch so konfiguriert werden, dass es in bestimmten Zeitintervallen arbeitet.
Kubernetes Ingress Controller für AWS
Kubernetes bietet einen externen Lastenausgleich und Netzwerkdienste für den Cluster über einen Dienst, der genannt wird AWS bietet Funktionen zum Lastenausgleich an, verbindet diese jedoch nicht automatisch mit denselben Möglichkeiten von Kubernetes. schließt diese Lücke.
Es verwaltet automatisch die AWS-Ressourcen für jedes Ingress-Objekt im Cluster, erstellt Lastenausgleicher für neue Ingress-Ressourcen und entfernt diese beim Löschen von Ressourcen. Es verwendet CloudFormation, um sicherzustellen, dass der Zustand des Clusters intakt bleibt. Zudem unterstützt es CloudWatch Alarm-Einstellungen und verwaltet automatisch andere Komponenten, die im Cluster verwendet werden, wie z. B. SSL-Zertifikate und EC2 Auto Scaling Groups.
Kubespray: Automatische Installation von Kubernetes
automatisiert die Installation eines produktionsbereiten Kubernetes-Clusters, beginnend mit der Installation auf physischen Servern bis hin zu großen öffentlichen Clouds. Es nutzt Ansible (optional mit Vagrant), um das Deployment zu starten und einen hochverfügbaren Cluster von Grund auf mit der von Ihnen gewählten Netzwerk-Erweiterung (z. B. Flannel, Calico usw.) auf der von Ihnen bevorzugten Linux-Distribution zu erstellen, wenn es auf physischen Servern installiert wird.
Skaffold: Iterative Entwicklung für Kubernetes
— ein Google-Tool, das zur Organisation von CD-Anwendungen in Kubernetes verwendet wird. Sobald Sie Änderungen am Quellcode vornehmen, erkennt Skaffold dies automatisch, startet den Build- und Bereitstellungsprozess und warnt Sie bei eventuellen Fehlern. Skaffold läuft vollständig clientseitig, sodass es bei der Installation oder Aktualisierung kleine Nuancen geben kann. Es kann mit bestehenden CI/CD-Pipelines verwendet werden und interagiert auch mit einigen externen Build-Tools, hauptsächlich mit Bazel von Google.
Teresa: Ein einfaches PaaS auf Kubernetes
ist ein Anwendungsbereitstellungssystem, das ein einfaches PaaS über Kubernetes betreibt. Benutzer, die in Teams organisiert sind, können ihre eigenen Anwendungen bereitstellen und verwalten. Dies erleichtert die Arbeit für diejenigen, die dieser Anwendung vertrauen und sich nicht mit Kubernetes und all seinen Komplikationen befassen möchten.
Tilt: Streaming von Container-Updates in Kubernetes-Cluster
, entwickelt von Windmill Engineering, überwacht die Änderungen verschiedener Dockerfile-Dateien und rollt schrittweise die entsprechenden Container im Kubernetes-Cluster aus. Im Wesentlichen ermöglicht es, das Produktions-Cluster in Echtzeit zu aktualisieren, indem einfach die Dockerfile-Dateien aktualisiert werden. Tilt führt die Builds im Cluster durch, wobei der Quellcode alles ist, was geändert werden muss. Sie können auch einen Snapshot des Clusterzustands erstellen und die Fehlermeldungsbedingungen direkt aus Tilt heraus festhalten, um diese mit Teammitgliedern zur Fehlersuche zu teilen.
P.S. All diese Tools haben wir mehrfach mit unseren neugierigen Händen getestet. Um echte Praktiken bereits (hoffentlich!) bei den Offline-Intensivkursen im Februar vorzustellen. 8.–10. Februar 2021. Und 12.–14. Februar. Ehrlich gesagt, wir haben auch die warme und energetisch aufgeladene Atmosphäre des Offline-Trainings vermisst. Welche auch immer die fortschrittlichen Technologien sein mögen, sie können die menschliche Interaktion und die besondere Atmosphäre, wenn Gleichgesinnte sich versammeln, nicht ersetzen.
Quelle: habr.com
