Kubernetes-Kontrollcenter: Mit YTT-Templates Kubernetes-Cluster besser verwalten

Wir zeigen, wie man mit zentraler und automatisierter YAML-Generierung Hunderte Microservices spielend verwalten kann.

Eine Anleitung von Jochen R. Meyer veröffentlicht am
Automatisierte Container-Bereitstellung, -Skalierung und -Verwaltung mit Kubernetes
Automatisierte Container-Bereitstellung, -Skalierung und -Verwaltung mit Kubernetes (Bild: Pixabay/Montage: Golem.de)

Eine grundlegende Frage bei jedem Betrieb von Kubernetes ist, wie man all die benötigten Ressourcen-Definitionen effizient verwaltet. Ein durchdachtes, hierarchisch aufgebautes Templating zahlt den anfangs etwas höheren Aufwand schnell und vielfach zurück. Dabei steigt der Nutzen exponentiell: Je mehr gleichförmige Produkte man betreibt, desto höher der Benefit.

Wir wollen uns im Folgenden ein aus der Praxis bewährtes Ressourcen-Verwaltungssystem für Kubernetes anschauen. Um das Maß an Synthetik und Abstraktion so gering wie möglich zu halten, beschreiben wir Aufgabenstellung und Implementierung der Lösung anhand eines fiktiven und stark vereinfachten Beispiels.

Unsere fiktive junge und dynamische Firma hat folgende Geschäftsidee: Sie möchte lokalen Fahrradgeschäften helfen, ihre Produkte auch im Internet zu verkaufen. Wir bauen den Webshop, binden Zahlungs- und Versanddienstleister an und hosten das entstehende Softwarepaket Microservice-basiert in Kubernetes. Unsere Partner, die Fahrradhändler, müssen lediglich die Produktlisten pflegen und die Pakete packen.

Die von uns gebaute Software ist dabei ein sogenanntes Whitelabel-Produkt; wir können sie also mit geringem Designaufwand an den Partner anpassen, während die internen Funktionen bei allen Partnern gleich bleiben können. Zwei Partner konnten wir bereits gewinnen: Fahrrad Vogel und Uwes Radladen.

YAML Templating mit ytt

Stellenmarkt
  1. Linux- und Datenbankadministrator (m/w/d)
    Müller Holding GmbH & Co. KG, Ulm-Jungingen
  2. IT Projektmanager (w/m/d)
    Pro Projekte-GmbH & Co. KG, Düsseldorf
Detailsuche

Um die für den Betrieb in Kubernetes benötigten Ressourcen zu erzeugen und zu verwalten, entscheiden wir uns für ein Templating auf Basis von ytt, einem flexiblen und mächtigen Tool zur Erzeugung und Manipulation von YAML-Dateien. Da eine Einführung in ytt an dieser Stelle den Rahmen sprengen würde, verweise ich auf die Dokumentation und vor allem auf die sehr aufschlussreiche interaktive Spielwiese. Außerdem darf gerne das Github-Repo zu diesem Artikel geforkt werden, um das Verständnis anhand von eigenen Experimenten zu vertiefen.

Mit unserem ytt-Templating können wir:

  • die YAMLs nach einer Art Baukastenprinzip erstellen,
  • die erstellten YAMLs vor der Verwendung prüfen und ggf. anpassen,
  • die erstellten YAMLs unter Versionsverwaltung (Git) nehmen.

Die Kubernetes-Ressourcen in den YAMLs wenden wir per kubectl apply im Kubernetes-Cluster an. Dabei gilt die Konvention, dass alles, was ins origin des Git-Repos gepusht wird, auch gleichzeitig im Cluster angewendet werden muss und umgekehrt. Mit dieser Konvention (deren Einhaltung sich durch Tooling automatisieren ließe) können wir im Git-Repo jederzeit nachschlagen, welche Ressourcen zu welchem Zeitpunkt aktiv waren. Außerdem lässt sich das Git-Diff nutzen, um nach der Generierung der YAMLs Änderungen zu prüfen und gegebenenfalls gegenzusteuern, bevor diese im Cluster angewendet werden - eine äußerst praktische Prozedur, die viele potenzielle Fehler abfangen kann.

Skalierbare Container-Infrastrukturen: Das Handbuch für Admins & DevOps-Teams, inkl. Docker und Container-Orchestrierung mit Kubernetes und OpenShift

Erstellen wir also nun die Kubernetes-Ressourcen zum Betrieb unserer beiden Kunden-Anwendungen. Jede Anwendung besteht dabei aus 3 Microservices (frontend, orders, stock), die im Zusammenspiel die Business-Anforderungen umsetzen. orders und stock haben dabei eine Datenbank-Anbindung. Für jeden Microservice erstellen wir einen Service (= LoadBalancer für einen Pod) und ein Deployment (= Bauplan für einen Pod), die wir in einer Datei zusammenfassen.

Die Services werden nicht (wie meist) per ConfigMap konfiguriert. Stattdessen definieren wir einen Multiline-String innerhalb des Deployments, den wir per downwardApi als Konfig-Datei in den Pod mounten. Dadurch brauchen wir uns nicht um Kopplung von Pod und ConfigMap zu kümmern und wir starten den Pod bei jeder angewendeten Konfigurationsänderung automatisch neu - in unserem Fall ist das das gewünschte Verhalten.

Aus Gründen der Sicherheit und Unabhängigkeit läuft jedes Produkt (= partnerspezifischer Onlineshop) in einem separaten Kubernetes-Namespace. Zur Qualitätssicherung betreiben wir neben der prod(uktiven)-Installation auch eine test-Umgebung. Wir verwalten also vier Produkte, die alle nach der gleichen Microservice-Architektur aufgebaut sind, sich aber keinen Microservice teilen (dürfen). Das individuelle Anpassen an die Kombination aus Partner und Ziel-Umgebung realisieren wir per Konfiguration.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Hierarchische Konfiguration: Beherrschbarkeit und Übersicht 
  1. 1
  2. 2
  3. 3
  4. 4
  5.  


Aktuell auf der Startseite von Golem.de
Code-Genossenschaften
Mitbestimmung und Einheitsgehalt statt Frust im Hamsterrad

Programmieren ohne Chef, das klingt für Angestellte wie ein Traum. Kleine Unternehmen wagen eine hierarchiefreie Graswurzelrevolution.
Ein Bericht von Daniel Ziegener

Code-Genossenschaften: Mitbestimmung und Einheitsgehalt statt Frust im Hamsterrad
Artikel
  1. TADF Technologie: Samsung kauft Cynora in Bruchsal und entlässt alle
    TADF Technologie
    Samsung kauft Cynora in Bruchsal und entlässt alle

    Der Cynora-Chef wollte das deutsche Start-up zum Einhorn entwickeln. Nun wurden die Patente und die TADF-Technologie von Samsung für 300 Millionen Dollar gekauft und das Unternehmen zerschlagen.

  2. Elektroauto: Hyundai Ioniq 6 bekommt ein stromlininienförmiges Design
    Elektroauto
    Hyundai Ioniq 6 bekommt ein stromlininienförmiges Design

    Hyundai hat das Design des Ioniq 6 gezeigt. Mit einer aerodynamischen Karosserie und einem Innenraum mit Wohlfühlambiente soll das Elektroauto Kunden von Tesla abwerben.

  3. Geforce GTX 1630: Nvidia bringt extralahme Grafikkarte - wegen Intel
    Geforce GTX 1630
    Nvidia bringt extralahme Grafikkarte - wegen Intel

    Die Geforce GTX 1630 wird unter der Arc A380 positioniert, weshalb Nvidia einen alten Chip in stark beschnittener Form wieder aufleben lässt.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PNY RTX 3080 12GB günstig wie nie: 929€ • MindStar (MSI RX 6700 XT 499€, G.Skill DDR4-3600 32GB 165€, AMD Ryzen 9 5900X 375€) • Nur noch heute: NBB Black Week • Top-TVs bis 53% Rabatt • Top-Gaming-PC mit AMD Ryzen 7 RTX 3070 Ti 1.700€ • Samsung Galaxy S20 FE 5G 128GB 359€ [Werbung]
    •  /