Das Betreiben einer Kubernetes-basierten Container-Infrastruktur ist aufwendig. Der Sovereign Cloud Stack bietet ein Framework und Werkzeuge, die alle wichtigen Prozesse rund um eine solche Plattform standardisieren und integrieren.
Eine eigene Kubernetes-Plattform, die jedermann betreiben kann und die gleichzeitig so weit standardisiert ist, dass Cloud-Provider darauf Kubernetes-as-a-Service-Angebote aufbauen können – das ist das Ziel des Sovereign Cloud Stacks (SCS [1]). Das Framework sollte es ermöglichen, Kubernetes-Cluster bis ins kleinste Detail zu definieren und zu testen, die gesamte Konfiguration zu paketieren und auf beliebig viele Cluster auszurollen. In diesem Zusammenhang stellt sich die Frage, warum SCS überhaupt auf Kubernetes (K8s [2]) setzt, welche Rolle die Cluster-API spielt und warum Cluster-Stacks so wichtig sind, um sämtliche Prozesse abzubilden, die das Betreiben einer Kubernetes-Plattform voraussetzt.
Bevor es um die Vorteile von K8s für Anwender geht und darum, wie es nicht nur die Container-Orchestrierung erschließt, sondern auch andere IT-Bereiche, ist es sinnvoll, einen Blick auf die Strukturen des SCS zu werfen. Er basiert grundsätzlich auf zwei Ebenen: Infrastruktur-as-a-Service (IaaS) und Kubernetes-as-a-Service (KaaS).
Basierend auf OpenStack stellt die IaaS-Schicht die Basiskomponenten wie Server-Kapazitäten, Load Balancer, Speicher und Netzwerkressourcen bereit. Sie bilden das stabile Fundament für anspruchsvollere Dienste und Anwendungen. Die KaaS-Ebene erweitert die Möglichkeiten der IaaS-Schicht, indem sie das Management von Kubernetes in verschiedenen IaaS-Umgebungen übernimmt. Dieser Ansatz erlaubt Organisationen, alle Vorteile von K8s zu nutzen, ohne sich mit den komplizierten Konfigurations- und Betriebsprozessen auseinandersetzen zu müssen. Die KaaS-Ebene nutzt die von der IaaS-Ebene zur Verfügung gestellten Ressourcen, um genau auf die Bedürfnisse der Nutzer zugeschnittene Kubernetes-Umgebungen aufzubauen.
Drei Säulen
Kubernetes gilt als der De-facto-Standard für Container-Orchestrierung. Seine Stärke liegt in der Fähigkeit, durch Abstraktion die Komplexität des Infrastrukturmanagements zu vermindern. Der Container-Orchestrierer erlaubt eine effiziente, standardisierte und flexible Verwaltung von Anwendungen, wobei die Benutzerfreundlichkeit von K8s auf drei Säulen ruht: der deklarativen Konfiguration, dem Regelkreis und der zentralen Bedeutung seiner API.
Diese Prinzipien sorgen dafür, dass Nutzer sich ausschließlich auf die Entwicklung und den Betrieb ihrer Anwendungen konzentrieren können, während Kubernetes das anspruchsvolle Server- und Infrastrukturmanagement übernimmt. Zwar fordert der Betrieb von K8s-Plattformen Anwender heraus, doch steckt in der KaaS-Schicht des SCS eine innovative Lösung dafür. Ihre Werkzeugkiste vereinfacht und optimiert den Betrieb.
Die Grundlage für den Erfolg von Kubernetes als Orchestrierungswerkzeug bildet seine deklarative Konfigurationsmethode. Das lässt sich mit einer Bestellung in einem Restaurant vergleichen: Der Kunde konzentriert sich auf das gewünschte Ergebnis – das Essen seiner Wahl –, hat aber mit dem Zubereitungsprozess nichts zu tun. Analog dazu können Unternehmen sich voll auf den Betrieb ihrer Anwendungen fokussieren, ohne in das komplexe Verwalten der Infrastruktur eintauchen zu müssen. Die deklarative Konfiguration in Kubernetes erlaubt es, das Was zu definieren, während sich die Plattform um das Wie kümmert.
Das macht selbst komplexe Spezifikationen leicht handhabbar, vereinfacht die Arbeit der Administratoren und ermöglicht einen Grad an Automatisierung und Optimierung, der sich mit traditionellen Systemen nicht erreichen ließe. Das Einarbeiten neuer Mitarbeiter gelingt dank der standardisierten Prozesse leichter, man braucht weniger maßgeschneiderte interne Lösungen, und die Ressourcenallokation wird optimiert. Im Ergebnis können sich Anwender ganz der Weiterentwicklung ihres Kerngeschäfts widmen.
Darüber hinaus unterscheidet sich Kubernetes von herkömmlichen Systemen durch seine adaptiven Regelkreise, die eine reaktive Anpassungsfähigkeit gewährleisten. Im Gegensatz zu statischen Skripten, die vorgegebene Befehlsfolgen abarbeiten, lassen sie zu, flexibel auf Veränderungen zu reagieren. Ähnlich wie beim Autofahren, wo der Fahrer ständig auf die Straßenverhältnisse reagiert, überwachen in K8s Controller lückenlos den Systemzustand und nehmen Anpassungen vor, um den Sollzustand zu erreichen oder zu erhalten. Dieser als Reconciliation bezeichnete Prozess stellt die effiziente Verwaltung von Anwendungen und Ressourcen gemäß den deklarativen Vorgaben sicher.
Als zentrales Element von Kubernetes fungiert die vielseitige API, die eine standardisierte und konsistente Interaktion mit der Plattform gewährleistet. Anwender profitieren von verschiedenen API-Zugriffsmöglichkeiten wie dem Einsatz von Kubectl, GitOps, UIs und der REST-API, die eine nahtlose Integration in bestehende Workflows unterstützt.
Die wirkliche Stärke der K8s-API liegt jedoch in ihrer Erweiterbarkeit. Über die Standardfunktionen für das Workload-Management hinaus können Entwickler die API erweitern und spezialisierte Controller für individuelle Anforderungen programmieren. Diese Flexibilität macht Kubernetes zu einem umfassenden Framework, das über die Container-Orchestrierung hinaus vielfältige Einsatzmöglichkeiten bietet.
Cluster-API und Grenzen
Die Cluster-API [3], ein Projekt der K8s-Community, nimmt eine Schlüsselrolle beim Betrieb von Kubernetes-Clustern ein. Sie erweitert die API des Orchestrierers, sodass sich nicht nur Anwendungen, sondern auch Infrastrukturressourcen verwalten lassen. Statt um Container kümmert sich die Cluster-API um Server, Load Balancer und Netzwerke. Die Software besteht aus einem generischen Teil, ergänzt durch die Integration der meisten wichtigen Infrastrukturanbieter.
Mithilfe der Cluster-API können Sie K8s selbst deklarativ betreiben und beispielsweise angeben, wie ein Cluster konfiguriert werden soll und wie viele und welche Maschinen es darin gibt. Außerdem startet und stoppt die Schnittstelle Server und reagiert auf Ereignisse wie einen ausgefallenen Knoten. Einen solchen erkennt die Cluster-API automatisch als problematisch und entfernt ihn aus dem Cluster. Anschließend startet sie einen neuen Server, provisioniert ihn und fügt ihn dem Cluster hinzu.
Allerdings übernimmt die Cluster-API dabei weder die konkrete Konfiguration der Node-Images noch der K8s-Cluster selbst. Für viele Anbieter gibt es entsprechende Beispiele, mit denen sich Cluster schnell starten lassen. Sie eignen sich jedoch nicht für den Einsatz in Produktionsumgebungen. Es obliegt daher den Anwendern selbst, passende Node-Images zu entwickeln und die Kubernetes-Cluster korrekt zu konfigurieren. In der Konsequenz bedeutet das: Zum Betreiben einer K8s-Plattform müssen Sie zahlreiche Helm-Charts, YAML-Dateien und Shell-Skripte erstellen und verwalten. Die sollten Sie selbstverständlich versionieren und (automatisiert) testen.
Tatsächlich gilt die Cluster-API in der Praxis häufig als Open-Source-Lösung für den Betrieb von Kubernetes-Clustern. Die Grenzen der Cluster-API geraten dabei allzu leicht aus dem Blickfeld. So vernachlässigen viele die Prozesse, die es zu etablieren gilt, um die Cluster-API in Produktionsumgebungen einsetzen zu können. Dazu gehören Prozesse für das Skalieren oder um das Erstellen und Aktualisieren von Clustern zu testen.
Cluster-Stacks
Cluster-Stacks (Abbildung 1) verbessern den Betrieb von Kubernetes, indem sie bewährte Entwicklungsprozesse auf die Konfiguration und das Management der Plattform übertragen. Ähnlich wie die Softwareentwicklung erfordern K8s-Plattformen ein präzises und methodisches Vorgehen. Fehler in der Plattformkonfiguration können sich destabilisierend auf Millionen von Endnutzern auswirken.

Abbildung 1: Cluster-Stacks enthalten neben der Konfiguration auch Kernanwendungen und Node-Images in einer versionierten und paketierten Form.
Die Cluster-API dient dabei als Basiswerkzeug, das ohne spezifische Konfigurationen keine Kenntnis über die Inhalte oder Funktionen der verwalteten Cluster besitzt. Die eigentliche Magie entsteht durch die detaillierten Einstellungen und Templates, die Sie in den Cluster-Stacks definieren. Die Stacks enthalten neben der Konfiguration die benötigten Kernanwendungen und Node-Images, alle in einer versionierten Einheit paketiert. Damit ermöglichen die Cluster-Stacks eine klare und effiziente Strukturierung der Kubernetes-Umgebung.
Die von der Syself GmbH [4] im Rahmen des SCS eingeführten Cluster-Stacks bieten ein umfassendes Framework, das die Zuverlässigkeit und Sicherheit der K8s-Plattform durch konsistente und wiederholbare Konfigurations- und Testprozesse gewährleistet. Entwickler richten maßgeschneiderte Cluster nach ihren spezifischen Anforderungen ein, was eine nahtlose und fehlerfreie Integration in ihre Workflows erlaubt. Die dreischichtige Architektur (Abbildung 2) bietet eine umfassende und konsistente Konfigurationsumgebung für Kubernetes-Plattformen, die zusammen ein robustes und zuverlässiges Framework für das Management von K8s-Clustern bilden.
Die Schicht der Node-Images enthält angepasste, mit der für den Kubernetes-Cluster notwendigen Software ausgestattete Betriebssystemabbilder. Die sorgfältige Auswahl und Konfiguration der in diesen Images enthaltenen Software gewährleistet die Kompatibilität und Leistungsfähigkeit der Server. Auf der Ebene der Cluster-API-Templates richten Sie die verschiedenen Kubernetes-Komponenten ein, wie den API-Server und den Controller-Manager. Dabei können Sie auf unterschiedliche Vorlagen zurückgreifen, was den Aufbau und das Skalieren von Clustern erheblich erleichtert. Die Schicht der Cluster-Addons umfasst für vollständig funktionsfähiges K8s-Cluster essenzielle Zusatzsoftware wie Netzwerk-Plugins (CNI) und den Cloud Controller Manager (CCM).
Das Werkzeug »csctl« [5] ist für die Validierung und Paketierung von Cluster-Stacks entscheidend, um die Integrität der Konfigurationen sicherzustellen und sie betriebsbereit zu paketieren. Dieser Prozess sorgt dafür, dass die Cluster-Stacks den Anforderungen entsprechen und keine Konfigurationsfehler aufweisen, die sonst zu Betriebsproblemen führen könnten. Anschließend werden die Cluster-Stacks für die Verteilung paketiert und als Cluster-Stack-Releases in einem Repository gespeichert, wo sie als Vorlagen für die reproduzierbare Erstellung von Kubernetes-Clustern dienen.
Der Cluster-Stack-Operator verwaltet die paketierten Cluster-Stacks und stellt sie den Endnutzern zur Verfügung. Diese zentrale Komponente ermöglicht es, die gewünschte Version und Konfiguration der Cluster über eine deklarative Ressource zu bestimmen, was die Flexibilität und Benutzerfreundlichkeit deutlich erhöht. Der Cluster-Stack-Operator läuft als Addon-Provider neben den Cluster-API-Operatoren. Dass sich die Cluster-Stacks einfach verteilen und wiederverwenden lassen, macht sie zu einem wertvollen Werkzeug. Sie erlauben standardisierte Konfigurationen über verschiedene Projekte und Teams hinweg.
Sicherheit und Qualität
Die Reproduzierbarkeit und Unveränderbarkeit von Cluster-Stacks, die die Paketierung gewährleistet, spielt insbesondere für den Einsatz in sicherheitskritischen oder isolierten Umgebungen eine entscheidende Rolle. Die Paketierung sorgt dafür, dass die Konfiguration eines Cluster-Stacks bei jeder Verwendung identisch ist, was die Zuverlässigkeit und Sicherheit der K8s-Plattform erhöht. Cluster-Stack-Releases ermöglichen eine klare Versionierung von Konfigurationen und das ausgiebige Testen neuer Konfigurationen vor dem Einsatz in Produktionsumgebungen.
Das Cluster-Stack-Framework adaptiert bewährte Verfahren aus der Softwareentwicklung, allen voran die für Git charakteristische Versionierung. Durch den Einsatz des Hash-Modes bei der Paketierung von Cluster-Stacks können Entwickler selbst minimale Konfigurationsänderungen in neue, eigenständig testbare Cluster-Stacks umwandeln. Darüber hinaus unterstützt das Framework Alpha- und Beta-Versionen, mithilfe derer Sie Änderungen in einer Testumgebung evaluieren, bevor Sie sie in die Produktionsumgebung übernehmen.
Vor der Freigabe der Cluster-Stacks kommen umfangreiche End-to-End-Tests zum Zug, um die Funktionalität und Kompatibilität der Konfigurationen zu gewährleisten. Sie validieren nicht nur, dass der Cluster integer ist und sich verhält, wie er soll, sondern schaffen auch eine verlässliche Basis für den Einsatz in produktiven Umgebungen. Zudem lassen sich damit Updates über verschiedene Versionen hinweg eingehend prüfen sowie die Kompatibilität mit unterschiedlichen Kubernetes-Versionen sicherstellen.
Weil sicherheitskritische Patches schnellstmöglich implementiert werden müssen, sind effiziente und umfassende Tests unerlässlich. Nur durch einen hohen Automatisierungsgrad lassen sich schnell neue Konfigurationen bereitstellen, die den strengen Qualitätskriterien entsprechen und so die Sicherheit und Zuverlässigkeit der Systeme gewährleisten.
Updates
Das Implementieren neuer Kubernetes-Konfigurationen stellt in der Praxis oft eine große Herausforderung dar, insbesondere aufgrund der komplexen Dynamik verteilter Systeme und der umfangreichen Aktualisierungsprozesse. In großen Clustern können Updates mehrere Stunden oder sogar Tage in Anspruch nehmen, während die Umgebung gleichzeitig reibungslos weiterlaufen muss.
Viele Betreiber von K8s-Umgebungen sind mit den spezifischen Herausforderungen, die während solcher Update-Prozesse auftreten können, wenig vertraut und erfassen kaum deren volle Tiefe und Komplexität. Die Situation beim Aktualisieren einer Kubernetes-Plattform ähnelt der Komplexität von Datenbankmigrationen, bei denen man die Reihenfolge der Migrationsschritte sorgfältig planen muss. Darüber hinaus gilt es, die Verfügbarkeit und Stabilität der Dienste auf der Plattform sicherzustellen.
Um diesen komplexen Herausforderungen zu begegnen, integrieren die Cluster-Stacks das Konzept des Multi-Stage-Deployments. Es ermöglicht eine detaillierte Koordination zwischen der Anwendungsbereitstellung und der Ausführung von Systemaktualisierungen oder dem Aufbau von Servern innerhalb eines Kubernetes-Clusters. Das systematische Vorgehen von Multi-Stage-Addons – sie definieren verschiedene Stufen und Kontrollpunkte im Update-Prozess – stellt sicher, dass Aktualisierungen effizient und ohne Betriebsunterbrechung ablaufen.
Multi-Stage-Addons ermöglichen das detaillierte Steuern des Deployments von Cluster-Addons, indem sie verschiedene Hooks (Haltepunkte) im Lebenszyklus eines Clusters nutzen. Diese Hooks bieten die Flexibilität, bestimmte Anwendungen zu definierten Zeitpunkten zu aktualisieren, etwa vor Beginn des eigentlichen Server-Updates. So lässt sich zum Beispiel ein Update der Control Plane verzögern, bis bestimmte kritische Anwendungen erfolgreich aktualisiert wurden, was das Risiko von Ausfallzeiten minimiert.
Neben der Koordination von Server- und Applikations-Updates ermöglichen Cluster-Stacks ein fein abgestuftes Management der Abhängigkeiten zwischen den Applikationen. Anwendungen lassen sich in einer bestimmten Reihenfolge installieren, aktualisieren oder auch entfernen. Mithilfe der Common Expression Language (CEL [6]) kann man Bedingungen definieren, die festlegen, wann Anwendungen aufeinander warten sollen oder wie sie auf bestimmte Ereignisse reagieren. Das ermöglicht, die Reihenfolge, die Bedingungen und den Zeitpunkt der Bereitstellung innerhalb eines Cluster-Stacks präzise zu definieren.
Eine weitere Stärke von Cluster-Stacks ist die Fähigkeit, Informationen aus Kubernetes-Objekten automatisch zu extrahieren und zu nutzen. Beispielsweise erkennt er die neue IP-Adresse eines Load Balancers automatisch und kann sie jenen Anwendungen zur Verfügung stellen, die diese Information benötigen. Diese Automatisierungsfunktion trägt dazu bei, die Komplexität des Managements zu reduzieren und einen reibungslosen Betrieb auch während umfangreicher Updates zu gewährleisten.
Cluster-Stacks bieten durch gezielte Deployment-Strategien eine robuste Lösung für die Herausforderungen bei der Aktualisierung und Verwaltung komplexer Kubernetes-Plattformen. Durch die detaillierte Steuerung des Deployments von Cluster-Addons, die Automatisierung von Prozessen und umfassende Testmöglichkeiten gewährleisten sie eine hohe Zuverlässigkeit und Stabilität von K8s-Infrastrukturen.
Fazit
Der Sovereign Cloud Stack ist ein wegweisender Ansatz im Cloud Computing, insbesondere für das Management und die Orchestrierung von Kubernetes-Umgebungen. Mit dem SCS erhalten Anwender nicht nur die Werkzeuge und das Framework, um ihre K8s-Cluster hochprofessionell zu betreiben, sondern auch eine Plattform, um anspruchsvolle und individuelle Anforderungen zu erfüllen. Dabei müssen sie keinerlei Kompromisse hinsichtlich der Qualitätssicherung und der Standardisierung von Prozessen eingehen.
Die Unveränderlichkeit jedes Cluster-Stacks im SCS macht die vorgenommenen Konfigurationen dauerhaft nachvollziehbar, was Audits und Compliance-Prüfungen auch Jahre nach der Inbetriebnahme ermöglicht. Diese Zuverlässigkeit und Transparenz prädestinieren den SCS für Unternehmen und Organisationen, die eine robuste, sichere und konforme Kubernetes-Infrastruktur anstreben. Darüber hinaus erweitert SCS seine Reichweite durch die Bereitstellung spezifischer Cluster-Stacks für OpenStack, was eine nahtlose Integration in bestehende OpenStack-Umgebungen ermöglicht. Diese Synergie erhöht die Flexibilität und Anpassungsfähigkeit des SCS und macht ihn zu einer vielseitigen Lösung für zahlreiche Cloud-Computing-Szenarien.
Der SCS eröffnet Infrastrukturanbietern neue Möglichkeiten, indem er ihnen erlaubt, ihre eigenen K8s-Angebote zu erstellen, sei es durch das Bereitstellen spezifischer Cluster-Stacks für ihre Infrastruktur oder durch die Nutzung der SCS-Cluster-Stacks für das eigene Portfolio. Diese Flexibilität fördert eine gesunde Ökosystemdynamik und unterstützt Anbieter dabei, ihren Kunden maßgeschneiderte und wettbewerbsfähige Lösungen anzubieten.
Insgesamt bietet der Sovereign Cloud Stack eine umfassende, sichere und standardisierte Lösung für das Management von Kubernetes-Umgebungen, die den hohen Anforderungen moderner Cloud-Infrastrukturen gerecht wird. Mit dem SCS können Anwender und Anbieter gleichermaßen von einer zukunftssicheren Plattform profitieren, die Qualität, Flexibilität und Skalierbarkeit in den Vordergrund stellt und damit den Weg für die nächste Generation des Cloud Computing ebnet.
Infos
- SCS: https://github.com/SovereignCloudStack
- Kubernetes-Kritik: Martin Gerhard Loschwitz, “Wir haben ein Problem”, LM 08/2023, S. 52, https://www.lm-online.de/49398
- K8s Cluster-API: https://github.com/kubernetes-sigs/cluster-api
- Syself GmbH: https://syself.com
- Csctl: https://github.com/SovereignCloudStack/csctl
- CEL: https://cel.dev/?hl=de






