Kapitel 1. Eine Kubernetes-Anwendungsplattform
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
OpenShift gibt deinen Anwendungen verteilte Rechenleistung, ohne dass du ein Experte für verteiltes Rechnen werden musst. Im Fachjargon heißt das, dass OpenShift eine Platform as a Service (PaaS) ist.
OpenShift enthält Werkzeuge für die Erstellung von Anwendungen aus dem Quellcode in zusammensetzbaren Pipelines. Außerdem gibt es eine browserbasierte grafische Oberfläche, die OpenShift Web Console, für die Bereitstellung und Verwaltung von Workloads. Durch Zeigen und Klicken kannst du Netzwerkverbindungen, Überwachungen und Warnmeldungen sowie Regeln für die automatische Skalierung von Arbeitslasten einrichten. Ein OpenShift-Cluster wendet Software-Updates auf sich selbst und seine Knoten an, ohne dass es zu Ausfallzeiten des Clusters kommt.
OpenShift ist ein Produkt von Red Hat. Du kannst es auf deinem Laptop, in einem Cluster aus physischen oder virtuellen Maschinen, bei allen großen Cloud-Providern und als Managed Service betreiben. Wie die meiste Software von Red Hat wird auch OpenShift als Open-Source-Projekt entwickelt, die OpenShift Kubernetes Distribution (OKD). OpenShift basiert wiederum auf zwei Open-Source-Grundpfeilern: Anwendungscontainern und dem Container-Orchestrator Kubernetes.
Linux-Container
Container sind eine atomare Einheit der Ausführung. Jede laufende Instanz eines Containers wird von einem Open Container Initiative (OCI)-Image geprägt, das eine ausführbare Anwendung mit allen Teilen verpackt, die sie zur Ausführung benötigt. Diese Abhängigkeiten können gemeinsam genutzte Bibliotheken, Hilfsprogramme, Sprachlaufzeiten und alles andere umfassen, was die Anwendung benötigt. Ein solches in sich geschlossenes Paket lässt sich leichter innerhalb eines Teams, in einer kontinuierlichen Reihe von Releases auf einem Server und auf beliebige Knoten in einem Cluster verteilen.
Container-Images werden in einem Repository gespeichert, das oft als Container-Registry bezeichnet wird. Die Einrichtungen des Linux-Kernels isolieren und vermitteln laufende Container. Ein laufender Container hat sein eigenes Dateisystem und einen bestimmten Anteil an den Ressourcen des Knotens, auf dem er läuft. Durch diese Isolierung kann ein Orchestrator Container auf einem Knoten mit ausreichenden Ressourcen einplanen, ohne jeden anderen dort laufenden Workload auf mögliche Konflikte bei Dateinamen, Netzwerkportnummern oder anderen Ressourcen zu überprüfen.
Kubernetes
OpenShift ist eine Distribution von Kubernetes. Kubernetes ist ein Open-Source-Projekt, das von Google ins Leben gerufen wurde und seit seiner Veröffentlichung im Jahr 2014 von einer Gruppe von Unternehmen und Einzelpersonen weiterentwickelt wird. Diese Gemeinschaft hat eine formelle Governance durch die Cloud Native Computing Foundation (CNCF) übernommen. Red Hat hat seit Beginn des Projekts maßgeblich zu Kubernetes beigetragen, und OpenShift wird in Zusammenarbeit mit der Kubernetes-Community entwickelt.
Kubernetes in OpenShift ist wie der Linux-Kernel in einer Linux-Distribution. Eine Linux-Distribution kombiniert den Kernel mit den vertrauten Programmen, die du direkt verwendest. Sie trifft auch einige grundlegende Entscheidungen darüber, wie du dich anmeldest, wo deine Dateien gespeichert werden und welche Software unentbehrlich ist, sodass du nützliche Arbeit mit dem System leisten kannst, ohne es komplett neu aufbauen zu müssen.
Kubernetes definiert eine Reihe gemeinsamer Ressourcen und eine API, um sie zu manipulieren. Diese Ressourcen beschreiben den gewünschten Zustand und verfolgen den tatsächlichen Zustand des Clusters und der Dinge, die auf ihm laufen. Kubernetes versucht, den tatsächlichen Zustand einer Ressource mit dem gewünschten Zustand in Einklang zu bringen. Dieser Vorgang wird während der gesamten Lebensdauer des Clusters wiederholt. Dieser ständige Zyklus des Beobachtens und Anpassens wird als Reconcile-Schleife bezeichnet.
Kubernetes allein reicht nicht aus, um Software in der Produktion zu betreiben. Es gibt viele Entscheidungen zu treffen und Komponenten zu konfigurieren, bevor du viel damit anfangen kannst. Stell dir vor, du hast den Quellcode für eine Anwendung und die Aufgabe, sie in einem Kubernetes-Cluster zu verteilen. Wie kompilierst du den Quellcode oder verbindest ihn mit seinem Interpreter, um ihn in ein Container-Image zu packen? Benötigt dein Build-Prozess andere Rechenressourcen, z. B. einen speziellen Build-Server? Wo wird das Image gespeichert, sobald es erstellt ist, damit dein Cluster darauf zugreifen kann? Eine öffentliche Container-Registry (und externe Abhängigkeiten) wie Docker Hub oder Quay? Oder wirst du deine eigene Registry betreiben müssen? Dein Programm hängt wahrscheinlich von anderen Programmen ab, wie einer Datenbank oder einem Anwendungsserver. Wo und wie werden diese laufen? Kannst du sie auf dem Cluster laufen lassen oder musst du ein weiteres System unterhalten? Dies sind grundlegende Überlegungen. Wenn du sie beantwortest, entsteht ein laufender Pod und eine Reihe neuer Fragen: Wie soll deine Anwendung mit der Außenwelt verbunden werden? Wie soll die Skalierung der Anwendung oder die Bereitstellung neuer Versionen geregelt werden?
Was OpenShift hinzufügt
OpenShift baut auf dem Kubernetes-Kern auf, um Funktionen und die Komponenten, die sie unterstützen, hinzuzufügen. Einige der ursprünglichen Entwickler nannten Kubernetes "eine Plattform, um Plattformen zu bauen". OpenShift hat sie beim Wort genommen. Es bietet die Automatisierung und Ausfallsicherheit einer modernen Infrastruktur, während du dich weiterhin auf deinen Anwendungscode konzentrieren kannst(Abbildung 1-1).
Dieses Buch konzentriert sich auf die Funktionen, die du zum Ausführen deiner Anwendungen verwenden wirst. Es ist kein Handbuch zur OpenShift-Systemadministration. Der nächste Abschnitt enthält eine Vorschau auf einige der OpenShift-Funktionen für Entwickler. Die meisten von ihnen wirst du in den folgenden Kapiteln verwenden.
Web-Konsole
Die OpenShift Web Console ist eine grafische Ansicht des Clusters und deiner Anwendungen. Wie der Name schon sagt, läuft sie in einem Webbrowser. Mit der Web Console kannst du alles Notwendige tun, um deine Softwareprojekte mit grafischen Steuerelementen und Formularen zu konfigurieren, anstatt dich durch viele Zeilen und Einrückungen der zugrunde liegenden YAML zu wühlen. Die Konsole stellt Verbindungen zwischen Diensten mit einer topologischen Ansicht der Anwendungskomponenten dar und zeigt den Ressourcenverbrauch von Projekten, Anwendungen und Containern mit grafischen Anzeigen und Diagrammen an(Abbildung 1-2).
Kuratierte Software-Kataloge: Ein OpenShift App Store
Die Web Console fasst auch Softwarekataloge zusammen, von Anwendungsvorlagen bis hin zu Kubernetes-Operatoren. Der OperatorHub in der Web Console ist zum Beispiel eine Art App Store für Kubernetes-Anwendungen. Hier kannst du Datenbanken, Message Queues und andere Middleware finden und einsetzen - also Komponenten, auf die fast alle Anwendungen angewiesen sind. Wie Apps auf deinem Mobilgerät halten Operators ihre Anwendungen am Laufen und aktualisieren sie mit den neuesten Funktionen und Korrekturen.
CI/CD: Pipelines
OpenShift bringt das System für kontinuierliche Integration und kontinuierliche Entwicklung (CI/CD) in den Cluster. Mit den OpenShift-Pipelines kannst du einen Prozess zum Erstellen, Testen, Verpacken und Freigeben deiner Anwendung zusammenstellen. In diesem Buch lernst du, wie du dich in der OpenShift Web Console anmeldest und wie die Plattform deinen Code automatisch baut und bereitstellt, wenn du Änderungen an deinem Quellcode-Repository vornimmst. Sobald du Deployment-Einstellungen und Build-Trigger eingerichtet hast, sollte OpenShift bei der täglichen Anwendungsentwicklung in den Hintergrund treten.
Vernetzung und Service Mesh
OpenShift kann einen Großteil der mühsamen Arbeit der Verbindung von Anwendungskomponenten untereinander und mit der Außenwelt deiner Nutzer und Kunden vereinfachen oder sogar automatisieren.
OpenShift Routes konfigurieren einen integrierten Layer 7 Reverse Proxy für externe HTTP-Verbindungen zu internen, lastverteilenden Cluster Services. Ein Service ist ein stabiler Endpunkt, der die laufenden Pods einer Anwendung repräsentiert, da diese bei Skalierung, Failover oder Upgrades wechseln können. Eine Route gibt die externen DNS-Hostnamen an, für die sie den Datenverkehr weiterleitet, sowie den Dienst, an den der Datenverkehr weitergeleitet werden soll.
OpenShift hat auch ein zusätzliches Service Mesh, Istio. Ein Service Mesh misst und steuert, wie sich Dienste untereinander und mit der Außenwelt verbinden. Istio wird in diesem Buch nicht ausführlich behandelt, aber wenn du das Deployment von Anwendungen auf OpenShift gemeistert hast, kannst du mehr über Service Meshes und Istio in Introducing Istio Service Mesh for Microservices von Christian Posta und Burr Sutter (O'Reilly) erfahren.
Integrierte Prometheus Metriken, Überwachung und Warnmeldungen
OpenShift baut seine Funktionen zur Überwachung von Cluster-Ressourcen auf dem Open-Source-Projekt Prometheus auf. Die Web-Konsole zeigt die CPU-, Speicher- und Netzwerkauslastung des gesamten Clusters, eines Projekts, eines Deployments oder eines laufenden Containers in Diagrammen an. Abbildung 1-3 zeigt die CPU-Auslastung eines Deployments.
OpenShift kann anwendungsspezifische Metriken von Programmen sammeln, die das Standard-Prometheus-Datenformat erzeugen. Prometheus-Exporter-Bibliotheken, die für viele Sprachen verfügbar sind, ermöglichen es einer Anwendung, Statistiken über ihren internen Zustand auf interoperable Weise zu liefern.
Zusammenfassung
Du hast gesehen, wie OpenShift Entwicklerwerkzeuge und Anwendungsverwaltung auf Kubernetes aufbaut, um die Bereitstellung und den Betrieb deiner Software zu erleichtern. Im nächsten Kapitel werden die wichtigsten Konzepte für die Erstellung und Bereitstellung von Anwendungen auf OpenShift vorgestellt.
Get OpenShift für Entwickler, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.