Containerplattformen – Neue Wege in der Virtualisierung
Mit den Open-Source-Systemen Kubernetes und Open Shift sind Containerplattformen nun auch für KMU einfach zu implementieren und zu betreiben. Der Beitrag beschreibt die Vorteile dieser Technologien.
(Quelle: Kelvin Ang – Unsplash)
Grundlagen der Containervirtualisierug
Servervirtualisierungen sind seit vielen Jahren im Einsatz. Die Möglichkeit, auf einer Hardware flexibel mehrere virtuelle Server bereitstellen zu können, hat den Betrieb von Software revolutioniert. Mit dem Aufkommen von Microservice Architekturen hat sich das Bedürfnis entwickelt, viele gleichartige Server auszurollen. Grund dafür ist, dass Software nicht mehr monolithisch in einem Stück geliefert wird, sondern in einzelnen, nur lose gekoppelten Servicekomponenten, die in der Regel die gleiche Laufzeitumgebung nutzen. Zur Verbesserung der Ausfallsicherheit und besseren Skalierung wird dabei jede einzelne Komponente in der Regel n-fach ausgerollt.
Hilfreiche Standardisierungen
Die für eine solche Topologie nötigen Server lassen sich mit Hilfe von Templates effizient bereitstellen. Die Installation der einzelnen Services braucht aber ein effizientes Tooling, um die Provisionierung in guter Qualität und mit geringem manuellen Aufwand leisten zu können, was jedoch kleine IT Abteilungen häufig überfordert.
Mit der Einführung der Containertechnologie durch Produkte wie LXC und Docker wurde es möglich, Software standardisiert bereitzustellen und in einer ebenso standardisierten Containerumgebung zu deployen. Software-individuelle Installationsschritte wurden somit obsolet und das Deployment neuer Komponenten vereinfacht. Was blieb, war die Aufgabe, die einzelnen Container auf den verschiedenen Servern zu managen. Hierzu benötigte es viel Handarbeit oder ausgefeiltes Scripting.
Kubernetes zur Orchestrierung komplexer Containerdeployments
Um diese Nachteile zu beheben, wurden durch die Entwicklung von Containerplattformen wie Kubernetes oder dem darauf basierenden Open Shift angegangen. Kubernetes wurde ursprünglich von Google zur Effizienzsteigerung im Betrieb entwickelt und unter einer Open-Source-Lizenz veröffentlicht. Kubernetes kümmert sich dabei um die Verwaltung von Ressourcen in einem Container-Cluster. Der Fokus liegt dabei auf Deployment, Skalierung und dem Betrieb der einzelnen Container.
Kubernetes abstrahiert dabei alle wesentlichen Komponenten in einem Cluster aus mehreren Hosts. Eine Control Plane kümmert sich um die Administration des Clusters, das Scheduling, also das Zuweisen von Containern zu einzelnen Hosts, die Konfigurationsverwaltung und das Monitoring der einzelnen Workloads. Die Konfiguration erfolgt dabei mittels Kommandozeile oder API-Aufrufen. Eine Web-UI kann allenfalls in Form einer Open-Source-Entwicklung nachgerüstet werden. Die Control Plane wird als Master-Replica System aufgesetzt, sodass die Management Prozesse hochverfügbar sind.
Alle teilnehmenden Knoten kommunizieren mittels eines Software defined networks (SDN) miteinander, so dass auch das Netzwerk vollständig virtualisiert und von der Control Plane verwaltet wird. So können die einzelnen Container in beliebige Subnetze gesetzt werden, um damit eine traditionelle Netzwerksegmentierung ohne Konfiguration von physischen Netzwerkkomponenten zu realisieren. Knoten können im laufenden Betrieb hinzugefügt und entfernt werden. Die Wartung aller Komponenten kann damit einfach und ohne Unterbruch vorgenommen werden.
Die Konfiguration eines Kubernetes-Cluster erfolgt nach dem «Desired State»-Prinzip, das heisst, dass der Administrator die Zielkonfiguration an die Control Plane übergibt und die Control Plane jederzeit die Abweichungen des Ist- vom Soll-Zustand korrigiert («Infrastructure as Code»). So werden Container, die abgestürzt sind, automatisch neu gestartet oder mittels Autoskalierung der aktuellen Last angepasst. Spezielle Kubernetes-Plugins, «Operator» genannt, können sogar produktspezifische Aufgaben automatisch ausführen. Ein Beispiel dafür ist das automatische, unterbruchsfreie Erneuern von Zertifikaten eines Webservers.
Open-Shift als Kubernetes Distributionen
Das Aufsetzen von Kubernetes bringt gewisse Herausforderungen mit sich. So gibt es standardmässig nur eine recht eingeschränkte Weboberfläche. Die Netzwerkimplementierung wird als Plugin installiert, bei der Installation muss man sich auf eines festlegen. Welches man braucht, hängt wiederum von den konkreten Anforderungen ab. Als Open-Source Lösung wird es ohne kommerziellen Support angeboten, wenn auch die Informationen im Internet reichlich sind und die Community stets hilfsbereit ist. Für weniger experimentierfreudige Nutzer wurde unter Federführung von Red Hat-Open Shift entwickelt. Dabei handelt es sich im Kern um ein Kubernetes, ergänzt um weitere Komponenten, die in einem Unternehmen mehr oder weniger Sinn machen.
So ist die Hardware-Unterstützung in Open Shift fokussierter, die möglichen Netzwerkplugins sind vorgegeben, eine nützliche Weboberfläche ist inkludiert und es werden fixfertige Installationsprogramme für RHEL, Fedora und CentOS angeboten. Red Hat hat sich in diesem Zusammenhang die Mühe gemacht, ein vollständiges Package zu schnüren und an die Anwender weiterzugeben. Open Shift kann sowohl in einer Open-Source-Variante genutzt werden (OKD) oder als kommerzielles Produkt mit umfangreichem Support von Red-Hat bezogen werden. Man verliert bei dessen Einsatz somit die umfassende Flexibilität von Kubernetes und erhält im Gegenzug den Komfort bei Installation und Betrieb sowie einige zusätzliche Features.
Für einen schnellen Start liefert Red Hat eine Vielzahl von sogenannten Templates, die genutzt werden können, um beliebte Produkte wie Datenbanken oder Application Server mit wenigen Clicks installieren zu können. Das funktioniert ähnlich wie ein App Store auf einem Smartphone.
Secure by Default
Besonderen Wert legt Open Shift auf sichere Standardeinstellungen aller Komponenten. Dem Administrator wird somit das Studium der umfangreichen Sicherheitseinstellungen von Kubernetes erspart, er erhält Out-of-the-box sinnvolle Einstellungen. Die Integration von Unternehmensverzeichnissen mittels LDAP oder Open ID Connect zur Authentication der Cluster-Benutzer ist ebenfalls vorbereitet und im Vergleich zu Kubernetes einfach einzurichten.
Erweiterte Möglichkeiten mit Open Shift für Entwickler
Open Shift glänzt insbesondere durch die Unterstützung von automatischen Deployments mittels eingebauter CI/CD Fähigkeiten. So wird ein Jenkins Container mitgeliefert und ist vollständig in die Open Shift Control Plane integriert. Somit lässt sich ein Entwickler-Workflow wie zum Beispiel GitOps komplett innerhalb von Open Shift abwickeln. Damit entsteht aus Entwicklersicht eine zusammenhängende und vollständig automatisierte Pipeline vom Source Code Repository bis zum Produktivsystem, die mittels Open Shift gesteuert wird. Der hohe Integrationsgrad der Entwicklungsprozesse ist daher auch ein Alleinstellungsmerkmal von Open Shift und bietet gegenüber einem diskreten Setup der einzelnen Tools Vorteile vor allem beim Management und Betrieb.
Fazit
Für Firmen, die umfangreiche Container-Workloads betreiben, ist eine Orchestrierung mittels Kubernetes oder Open Shift mit grossen Vorteilen verbunden. Gegenüber einer klassischen Virtualisierung steigt die Effizienz und Flexibilität bei der Nutzung der Ressourcen im Datacenter deutlich. Hat man ein starkes Linux Team im Haus, ist Kubernetes eine valide Option. Benötigt man allerdings den kommerziellen Support oder schätzt die Integration der CI/CD Tools, so lohnt sich ein Blick auf Open Shift.
Die einfachste Nutzung von hochwertigen Containerplattformen wird allerdings durch Cloud Provider ermöglicht. Alle Hyperscaler bieten Kubernetes-kompatible Containerplattformen an und nehmen dem Nutzer somit weite Teile des Betriebsaufwands ab.
(Erstpublikation am 30.4.2021: www.kmu-magazin.ch/ict-technik/containerplattformen-neue-wege-der-virtualisierung)