Was ist OpenShift?
OpenShift ist eine Anwendungsplattform auf Basis von Kubernetes. Die Software wird für den Aufbau verteilter, skalierender Anwendungs- und Entwicklungsumgebungen eingesetzt. Auf Basis von OpenShift lassen sich Firmen-eigene Platform-as-a-Service - (PaaS), Software-as-a-Service - (SaaS) und Containers-as-a-Service - (CaaS) Lösungen implementieren.
Die Software erlaubt das komplette Management des Anwendungs-Lifecycles, inklusive Entwicklung, Rollout, Betrieb und Wartung. Mehr als zweitausend Unternehmen weltweit setzen auf OpenShift, um ihre Anwendungen in Hybrid-Cloud-Umgebungen zu hosten. Wir erklären, wie OpenShift funktioniert und was die Software besonders macht.
Welche OpenShift-Versionen gibt es?
Bei OpenShift handelt es sich nicht um ein einzelnes Produkt. Vielmehr veröffentlicht die Firma Red Hat verschiedene Versionen als Open Source Software unter der Apache-Lizenz. Die „Flagship“-Version ist die „Red Hat OpenShift Container Platform“ (OCP). Diese wird als Kubernetes-Cluster auf der Hybrid-Cloud Infrastruktur eines Unternehmens installiert. Ein einzelner OpenShift-Cluster kann sich also über mehrere Public- und Private-Cloud Umgebungen hinweg erstrecken.
Neben der OpenShift Container Platform (OCP) gibt es die Community-Version „OKD“, welche vormals den Namen „OpenShift Origin“ innehatte. Bei OKD handelt es sich um eine angepasste Kubernetes-Distribution, welche auf Kubernetes für die Clusterverwaltung und „Open Container Initiative“ (OCI)-konforme Container setzt. Ferner sind Funktionen für die Anwendungs-Lifecycle Verwaltung und DevOps-Tools mit an Bord. Interessanterweise ist OKD die „Upstream“-Grundlage für die Entwicklung der anderen OpenShift-Versionen – ähnlich, wie das Open-Source-Projekt Chromium als Grundlage für Entwicklung des Chrome-Browsers dient.
Neben OCP und OKD als „On-premises“-Lösungen, welche auf eigener Infrastruktur gehostet werden, gibt es eine Vielzahl an „Managed“-Lösungen. Diese laufen auf verschiedenen Public Clouds großer Anbieter, sowie auf der Cloud-Infrastruktur von Red Hat. Wir besprechen in erster Linie OCP in der zum Zeitpunkt der Artikelerstellung aktuellen Version 4.8. Schauen wir uns im Überblick die verschiedenen OpenShift-Versionen an:
OpenShift Produkte | Beschreibung | Plattform |
Red Hat OpenShift Container Platform (OCP) | „On-premises“ Enterprise-Lösung für den Einsatz in der eigenen Hybrid-Cloud Infrastruktur | Red Hat Enterprise Linux CoreOS (RHCOS) |
OKD | „On-premises“ Community-Produkt, Grundlage für OCP | Red Hat Enterprise Linux (RHEL) oder CentOS |
OpenShift Online | Managed-SaaS-Lösung | Red Hat Cloud |
OpenShift Dedicated | Managed-PaaS-Lösung; Red Hat übernimmt komplette Administration des Systems | Amazon AWS oder Google Cloud |
Wie funktioniert OpenShift?
OpenShift ist eine Produktreihe von Anwendungsplattformen auf Basis von Kubernetes. Die Software umfasst eine Handvoll Kernkomponenten, sowie eine Vielzahl zusätzlicher Funktionalitäten. OpenShift lässt sich in unterschiedlichsten Umgebungen hosten; dazu gehören „Bare metal“-Maschinen, Public- und Private-Clouds, sowie „Edge“-Geräte.
Die Gemeinsamkeiten und Unterschiede von OpenShift und Kubernetes besprechen wir in einem separaten Artikel.
Aus welchen Komponenten besteht OpenShift?
OpenShift basiert auf einem Software-Stack, das heißt einem Stapel miteinander verbundener Technologien. Auf der untersten Ebene kommt eine spezielle Linux-Distribution als Betriebssystem zum Einsatz. Das dabei verwendete „Red Hat Enterprise Linux CoreOS“ (RHCOS) wird auf physischer oder virtualisierter Hardware installiert.
In früheren OpenShift Versionen kam „Red Hat Enterprise Linux“ (RHEL) anstelle von RHCOS zum Einsatz.
Aufbauend auf dem RHCOS-Betriebssystem kommt Kubernetes als Container- und Cluster-Orchestrator zum Einsatz. Kubernetes übernimmt Deployment, Skalierung und Verwaltung containerisierter Anwendungen. Als nächste Ebene im Software-Stack werden Kubernetes-Operatoren verwendet. Dabei handelt es sich um vorgefertigte, einfach installierbare „Kubernetes-native“ Anwendungen. Neben Operatoren kommt bei Einrichtung und Betrieb eines OpenShift-Clusters eine Container-Registry zum Einsatz.
Was für ein Kubernetes ist in OpenShift enthalten?
OpenShift setzt auf eine spezielle Kubernetes-Distribution, welche als Container-Runtime CRI-O statt Docker bzw. containerd nutzt. Durch die Loslösung von Docker als zugrundeliegender Technologie ergeben sich Vorteile in Bezug auf Sicherheit und Kompatibilität mit anderen Container-Formaten.
Was ist ein Operator in OpenShift?
Ein Kubernetes-Operator überwacht den Zustand einer gesamten Anwendung. Mit Installation, Betrieb und Wartung decken Operatoren den kompletten Lifecycle einer Kubernetes-Anwendung ab. In den Worten der OpenShift-Dokumentation:
„An Operator is a method of packaging, deploying and managing a Kubernetes-native application. A Kubernetes-native application is an application that is both deployed on Kubernetes and managed using the Kubernetes APIs and kubectl tooling.“ - Quelle: https://cloud.redhat.com/learn/topics/operators
Übersetzung: „Ein Operator ist eine Methode zum Verpacken, Deployen und Verwalten einer Kubernetes-nativen Anwendung. Eine Kubernetes-native Anwendung ist eine Anwendung, welche durch Kubernetes deployt und mit der Kubernetes-API und dem kubectl-Tool verwaltet wird.“ (Übersetzt von IONOS)
Auf der Plattform OperatorHub gibt es eine große Auswahl von Operatoren. So lassen sich beispielsweise verschiedene Datenbanksysteme mit minimalem Aufwand nahtlos in den OpenShift-Cluster einbinden. Ferner kommen Infrastruktur-Operatoren zur Verwaltung des Clusters zum Einsatz.
Wie sich zeigt, sind Operatoren essenziell für die Funktionalität von OpenShift. Ein Kubernetes-Operator ist eine Spezialisierung des Kubernetes-Controllers auf Anwendungsebene. Ein Kubernetes-Controller überwacht kontinuierlich den Zustand einer Ressource und passt bei Bedarf verschiedene Parameter an, um einen definierten Zustand zu halten.
Was ist eine Registry in OpenShift?
Eine Container-Registry enthält Container-Images, welche beim Bauen von Software laufend erzeugt werden. Die Images werden versioniert, einer Sicherheitsprüfung unterzogen und in der Registry abgelegt. Interessanterweise ist innerhalb von OpenShift die Registry selbst als Operator implementiert.
Mit „Quay“ steht eine von Red Hat entwickelte Registry mit Fokus auf Sicherheit zur Verfügung. Die bei der Installation des OpenShift-Clusters benötigten Images werden von Quay bezogen. Dabei kann Quay neben den Container-Images noch weitere Build-Artefakte verwalten. In den Worten der Red Hat-Dokumentation:
„Quay is a container registry for storing containers, Helm charts, and other container-related content.“ – Quelle: https://www.redhat.com/sysadmin/introduction-quay
Übersetzung: „Quay ist eine Container-Registry zur Speicherung von Containern, Helm-Charts und weiteren auf Container bezogenen Inhalten.“ (Übersetzt von IONOS)
Dem gestaffelten Produktmodell von OpenShift OCP und OKD folgend, existieren mehrere Versionen von Quay:
Registry | Erklärung | Plattform |
Red Hat Quay | läuft auf der eigenen Rechen-Infrastruktur, inklusive Private-Clouds; wird in OpenShift durch einen Operator eingebunden | eigene Cloud-Umgebung, inklusive Private-Cloud |
Red Hat Quay.io | verwaltet von Red Hat mit Enterprise-Level-Support | Cloud |
Wie ist OpenShift aufgebaut?
OpenShift wird auf Grundlage von Kubernetes als Cluster von Containern realisiert. Auf der Cluster-Ebene umfasst OpenShift zwei Ebenen:
- Kontroll-Ebene („Control Plane“)
Die Kontroll-Ebene setzt sich aus sog. „Control-Plane-Maschinen“ zusammen. Diese sind auch als „Master-Maschinen“ bekannt und verwalten den OpenShift Container Platform-Cluster.
- Arbeits-Maschinen („Worker Machines“)
Die Arbeitsmaschinen, welche auch als „Compute-Maschinen“ bekannt sind, führen die eigentlichen Arbeiten des OpenShift-Clusters aus. Master-Maschinen weisen den Arbeitsmaschinen Aufgaben zu und überwachen die Ausführung.
Welche Dienste laufen auf den Arbeits-Maschinen?
Eine Arbeitsmaschine betreibt die folgenden Dienste und wird dadurch in den OpenShift-Cluster eingebunden:
- CRI-O, als Container-Laufzeitumgebung,
- Kubelet, als Dienst welcher Anfragen zum Starten und Stoppen der Arbeitsaufgaben annimmt und verarbeitet,
- ein Service-Proxy, welcher die Kommunikation zwischen Arbeitsmaschinen regelt.
Die weitere Spezialisierung der Arbeitsmaschinen ergibt sich aus dem Zustand der laufenden Container und der darin enthaltenen Software.
Aus welchen Komponenten besteht die Kontrollebene?
Schauen wir uns im Folgenden detailliert den Aufbau der Kontrollebene an. Wir unterscheiden zwischen Komponenten der Kubernetes-Implementation und den OpenShift-spezifischen Komponenten:
Kubernetes-Komponente | Erklärung |
Kubernetes API Server | Der Kubernetes API Server überprüft und konfiguriert die Daten für Pods, Dienste und Replikations-Controller. Ferner fungiert die API als zentrale Schnittstelle für globale Cluster-Zustandsdaten. |
etcd | Der etcd-Dienst enthält den persistenten Master-Zustand. Die anderen Komponenten überwachen ectd auf Änderungen und passen ihren Zustand wie erforderlich an. |
Kubernetes Controller Manager | Der Kubernetes Controller Manager überwacht etcd auf Änderungen von Objekten wie Replikation, Namespace und Service Account Controller und benutzt die API, um den gewünschten Zustand zu erzielen. Es gibt einen Cluster mehrerer dieser Prozesse, wobei einer als Anführer aktiv ist. |
Kubernetes Scheduler | Der Kubernetes Scheduler erkennt neu erzeugte Pods, denen noch kein Node zugewiesen wurde und wählt den besten Node, um den Pod zu hosten. |
Die OpenShift-spezifischen Komponenten der Kontrollebene sind als Operatoren implementiert:
OpenShift-Komponente | Erklärung | Verwaltet durch |
OpenShift API Server | Der OpenShift API Server überprüft und konfiguriert OpenShift-Ressourcen, wie Projekte, Routes und Templates. | OpenShift API Server Operator |
OpenShift Controller Manager | Der OpenShift Controller Manager überwacht etcd auf Änderungen von OpenShift-Objekten, wie Projekte, Routes und Template-Controller-Objekte und benutzt die API, um den gewünschten Zustand zu erzielen. | OpenShift Controller Manager Operator |
OpenShift OAuth API Server | Der OpenShift OAuth API Server überprüft und konfiguriert die Daten für die Authentifizierung auf der OpenShift Container Platform. Dazu gehören Benutzer, Gruppen und OAuth Token. | Cluster Authentication Operator |
OpenShift OAuth Server | Benutzer erfragen ein Token vom OpenShift OAuth Server, um sich gegenüber der API zu authentifizieren. | Cluster Authentication Operator |
Für welche Anwendungsszenarien wird OpenShift eingesetzt?
Die OpenShift Container Plattform wird vor allem für den Aufbau von Anwendungs- und Entwicklungsumgebungen eingesetzt. So lassen sich Firmen-eigene PaaS-, SaaS- und CaaS-Lösungen implementieren. Aufgrund der Mächtigkeit und Komplexität der Software kommt OpenShift in erster Linie für langlebige Projekte großer Organisationen zum Einsatz.
Zu den Nutzern von OpenShift gehören Regierungs- und Forschungseinrichtungen auf nationaler Ebene, sowie international agierende Unternehmen wie Banken und Versicherungen. Die genannten Nutzergruppen profitieren allesamt von Hybrid-Cloud-Deployments. Das Deployment über Grenzen von Private- und Public-Clouds hinweg erlaubt, Teile der Infrastruktur nach lokalen Compliance-Vorgaben zu hosten.
Ein weiterer, wichtiger Aspekt, welcher für den Einsatz von OpenShift spricht, ist das hohe Maß an Sicherheit. Cyber-Einbrüchen und Datenlecks vorzubeugen ist essenziell für große, internationale Unternehmen. Denn bei Brüchen der Sicherheit drohen nachhaltiger Image-Schaden und hohe Strafzahlungen.
Die in OpenShift enthaltenen Funktionalitäten erlauben schnelle Entwicklungs-Workflows. Dies führt im Einsatz zu radikal gesenkten Entwicklungszeiträumen; firmeneigene Software-Teams können ihre Ressourcen komfortabel selbst verwalten und die Entwicklungsarbeit kontinuierlich vorantreiben.
Nutzt ein Unternehmen eines der verfügbaren Managed-OpenShift-Angebote, entfällt der Aufwand für Administration von Server und Betriebssystemen. Anstatt sich um Updates und Backups zu kümmern, kann das Unternehmen sich auf das Wesentliche konzentrieren: Innovation und Werte für Kunden schaffen.
Sicherlich ist OpenShift nichts für kleine Unternehmen oder einzelne Entwickler. Um deren Anforderungen zu erfüllen, greift man lieber zu einer der verfügbaren OpenShift-Alternativen oder Kubernetes-Alternativen.
Was ist der Funktionsumfang von OpenShift?
Ein großer Vorteil von OpenShift gegenüber „blankem“ Kubernetes sind die von Hause aus vorhandenen Komfortfunktionen. Diese gehen über die bloße Cluster-Verwaltung von Kubernetes hinaus. Unter anderem enthält OpenShift Funktionalitäten für:
- Software-definierte Netzwerke (SDN)
- Routing
- Authentifizierung
- Monitoring und Logging
Zur Verwaltung der Plattform enthält OpenShift neben den obligatorischen Kommandozeilen-Werkzeugen eine mächtige Web-Oberfläche. Entwicklungs- und DevOps-Workflows werden durch Nutzung von „Red Hat OpenShift Pipelines“ beschleunigt. Dabei kommt das Open Source Tekton-Framework für „Continuous integration“ / „Continuous development“ (CI/CD) zum Einsatz. Neben containerisierten Anwendungen lassen sich moderne „Serverless“-Ansätze auf Basis von „Serverless Kubernetes“ (Knative) nutzen.
Ein weiterer Schwerpunkt von OpenShift liegt auf der Bereitstellung verteilter Microservice-Architekturen. Dieses auch als „Red Hat Service Mesh“ bekannte Anwendungsmuster beruht auf dem Open Source-Projekt „Istio“. Um der mit Microservice-Architekturen einhergehenden Komplexität Herr zu werden, enthält OpenShift eine Reihe weiterer Tools: „Prometheus“ dient der Verwaltung von Monitoring und Benachrichtigungen, wohingegen „Jaeger“ die Nachverfolgung von Transaktionen erlaubt. Zur Visualisierung des Service Mesh kommt „Kiali“ zum Einsatz.
Welche Vor- und Nachteile hat OpenShift?
Einer der größten Vorteile bei der Nutzung von OpenShift liegt darin, die Software in einer Hybrid-Cloud-Umgebung zu betreiben. Dabei erstreckt sich ein einzelner OpenShift-Cluster über die Grenzen mehrerer Private- und Public-Clouds hinweg. OpenShift-Cluster, welche Red Hat Enterprise Linux CoreOS (RHCOS) als alleiniges Betriebssystem nutzen, profitieren von automatisierten Prozessen beim Update und Upgrade.
Durch die integrierte Red-Hat-Technologie und die in die Plattform integrierten Verwaltungswerkzeuge und -prozesse ergibt sich ein hoher Nutzungskomfort. Das Open Source-Entwicklungsmodell und die eingebauten DevOps-Funktionalitäten erlauben schnelle Entwicklungsprozesse. Die verstärkte Nutzung von Operatoren als universelles Anwendungsformat trägt zur Standardisierung bei und erleichtert vormals komplexe Anpassungen.
Der Einsatz von CRI-O als Container-Runtime anstelle von Docker führt zu einer höheren Sicherheit der Plattform. Die benutzerfreundliche Web-Oberfläche gilt als mächtiger und übersichtlicher als das vergleichbare Kubernetes Dashboard. Auch auf der Kommandozeile glänzt OpenShift mit dem oc-Befehl, welcher die Bedienung der Plattform erleichtert.
Natürlich bedingen die genannten Besonderheiten von OpenShift auch einige Nachteile. Zum einen vermissen eingefleischte Kubernetes-Nutzer die mächtigen Helm-Charts, welche den Aufbau der Infrastruktur beschreiben. Ferner lassen sich auf Grund der strengen Sicherheits-Einstellungen nicht alle Container von Docker Hub unter OpenShift nutzen. Auch der Fokus auf die Red-Hat-eigene Linux-Distribution Red Hat Enterprise Linux CoreOS (RHCOS) wirkt einschränkend; Kubernetes ist in dieser Hinsicht flexibler.
Auf welcher Infrastruktur lässt sich OpenShift betreiben?
OpenShift lässt sich auf so gut wie allen Ebenen von Rechen-Infrastruktur betreiben: von „Bare metal“-Maschinen im eigenen Rechenzentrum über virtualisierte Hardware in Private- und Public-Cloud-Umgebungen, bis hin zu Edge-Geräten. Wir unterscheiden zwischen „Managed“-Lösungen, bei denen die Verwaltung der OpenShift-Plattform vom Anbieter übernommen wird, und vom Kunden administrierten „Self-managed“ Installationen:
Welche Optionen für den Betrieb von Managed-OpenShift gibt es?
Produkt | Infrastruktur | Verwaltet durch | Support von |
Microsoft Azure Red Hat OpenShift | Microsoft Azure | Red Hat und Microsoft | Red Hat und Microsoft |
Red Hat OpenShift Dedicated | Amazon AWS oder Google Cloud | Red Hat | Red Hat |
Red Hat OpenShift on IBM Cloud | IBM Cloud | IBM | Red Hat und IBM |
Red Hat OpenShift Service on AWS | Amazon AWS | Red Hat und AWS | Red Hat und AWS |
Welche Optionen für den Betrieb von Self-managed OpenShift gibt es?
Produkt | Infrastruktur | Verwaltet durch | Support von |
Red Hat OpenShift Platform Plus | Private Cloud, Öffentliche Cloud, Physische Maschine, Virtuelle Maschine, Edge | Kunde | Red Hat / Infrastruktur-Anbieter |
Red Hat OpenShift Container Platform | Private Cloud, Öffentliche Cloud, Physische Maschine, Virtuelle Maschine, Edge | Kunde | Red Hat / Infrastruktur-Anbieter |
Red Hat OpenShift Kubernetes Engine | Private Cloud, Öffentliche Cloud, Physische Maschine, Virtuelle Maschine, Edge | Kunde | Red Hat / Infrastruktur-Anbieter |