Kapitel 4. Der Operator-Rahmen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Die Entwicklung eines Operators und die Verwaltung seiner Verteilung, seines Einsatzes und seines Lebenszyklus sind unvermeidlich komplex. Das Red Hat Operator Framework macht es einfacher, Operatoren zu erstellen und zu verbreiten. Es erleichtert die Entwicklung von Operatoren durch ein Software Development Kit (SDK), das einen Großteil der sich wiederholenden Implementierungsarbeiten automatisiert. Das Framework bietet außerdem Mechanismen für die Bereitstellung und Verwaltung von Operatoren. Der Operator Lifecycle Manager (OLM) ist ein Operator, der andere Operatoren installiert, verwaltet und aufrüstet. Operator Metering ist ein Kennzahlensystem, das die Nutzung der Clusterressourcen durch die Operatoren erfasst. Dieses Kapitel gibt dir einen Überblick über diese drei wichtigen Teile des Frameworks und bereitet dich darauf vor, mit diesen Tools einen Beispiel-Operator zu erstellen und zu verteilen. Außerdem installierst du das Kommandozeilentool operator-sdk
, die wichtigste Schnittstelle zu den SDK-Funktionen.
Operator Framework Ursprünge
Das Operator SDK baut auf dem Kubernetes controller-runtime
auf, einer Reihe von Bibliotheken, die wichtige Kubernetes-Controller-Routinen in der Programmiersprache Go bereitstellen. Als Teil des Operator Frameworks bietet das SDK Integrationspunkte für die Verteilung und Verwaltung von Operatoren mit OLM und deren Messung mit Operator Metering. Das SDK und das gesamte Red Hat Operator Framework sind quelloffen und werden von der Community und anderen Organisationen mitgestaltet. Derzeit wird es an die herstellerneutrale Cloud Native Computing Foundation gespendet, die unter auch Kubernetes und viele andere verwandte Projekte beheimatet.
Operator Maturity Model
Das in Abbildung 4-1 dargestellte Operator-Reifegradmodell skizziert eine Möglichkeit, über die verschiedenen Stufen der Operator-Funktionalität nachzudenken. Du kannst mit einem Minimalprodukt beginnen, das seinen Operanden installiert, dann Lebenszyklusmanagement und Upgrade-Funktionen hinzufügen und so im Laufe der Zeit zur vollständigen Automatisierung deiner Anwendung gelangen.
Ein Operator kann bescheiden beginnen und über eine Reihe von Entwicklungszyklen immer ausgefeilter werden. Die erste Phase des Modells erfordert gerade so viel anwendungsspezifischen Code, dass alle Ressourcen, die der Operator benötigt, erstellt werden können. Mit anderen Worten: Phase eins ist die vorbereitete, automatische Installation einer Anwendung.
Operator SDK
Das Operator-SDK ist eine Sammlung von Werkzeugen für , mit denen du einen Operator erstellen und für den Einsatz vorbereiten kannst. Das SDK bietet derzeit erstklassige Unterstützung für die Erstellung von Operatoren in der Programmiersprache Go, die Unterstützung anderer Sprachen ist geplant. Das SDK bietet außerdem eine Art Adapter-Architektur für Helm-Diagramme oder Ansible-Playbooks. Wir werden diese Adapter-Operatoren in Kapitel 6 behandeln. In Kapitel 7 zeigen wir dir, wie du anwendungsspezifische Verwaltungsroutinen in Go implementierst, um einen eigenen Operator mit dem SDK-Tool zu erstellen.
Installation des Operator SDK Tools
Im Mittelpunkt des Operator-SDK steht das Kommandozeilen-Tool operator-sdk
, mit dem du Operatoren erstellen kannst. Das SDK gibt ein Standard-Projektlayout vor und erstellt im Gegenzug einen Go-Quellcode für die grundlegende Kubernetes-API-Controller-Implementierung und Platzhalter für deine anwendungsspezifischen Handler. Von dort aus bietet das SDK einfache Befehle, um einen Operator zu erstellen, ihn in einen Linux-Container zu verpacken und die Kubernetes-Manifeste im YAML-Format zu generieren, die für den Einsatz des Operators in Kubernetes-Clustern benötigt werden.
Binäre Installation
Um eine Binärdatei für dein Betriebssystem zu installieren, lade operator-sdk
aus dem Kubernetes SDK Repository herunter, mache es ausführbar und verschiebe es in ein Verzeichnis in deinem $PATH
. Das Programm ist statisch gelinkt, sodass es auf allen Plattformen, für die eine Version verfügbar ist, ausgeführt werden kann. Zum Zeitpunkt dieses Artikels stellt das Projekt Builds für die Betriebssysteme macOS und Linux auf der x86-64-Architektur bereit.
Tipp
Bei einem sich schnell entwickelnden Projekt wie operator-sdk
ist es eine gute Idee, in der Installationsanleitung des Projekts nach der neuesten Installationsmethode zu suchen.
Installieren von der Quelle
Um die neueste Entwicklungsversion zu erhalten, oder für Plattformen ohne Binärdistribution, baue operator-sdk
aus den Quellen. Wir gehen davon aus, dass du git
und go
installiert hast:
$
go
get
-d
github.com/operator-framework/operator-sdk
$
cd
$GOPATH
/src/github.com/operator-framework/operator-sdk
$
git
checkout
master
$
make
tidy
$
make
install
Ein erfolgreicher Build-Prozess schreibt die Binärdatei operator-sdk
in dein $GOPATH/bin-Verzeichnis. Führe operator-sdk version
aus, um zu prüfen, ob es sich in deinem $PATH
befindet.
Dies sind die beiden gängigsten und am wenigsten abhängigen Wege, um das SDK-Tool zu erhalten. Schau in der Installationsdokumentation des Projekts nach, ob es noch andere Optionen gibt. Die folgenden Beispiele in diesem Buch verwenden die Versionsreihe 0.11.x von operator-sdk
.
Operator Lifecycle Manager
Operatoren befassen sich mit dem allgemeinen Prinzip, dass jede Anwendung, egal auf welcher Plattform, im Laufe der Zeit erworben, bereitgestellt und verwaltet werden muss. Operatoren sind selbst Kubernetes-Anwendungen. Während ein Operator seinen Operanden verwaltet, was verwaltet einen Operator?
DerOperator Lifecycle Manager bringt das Operator-Muster eine Stufe höher: Er ist ein Operator, der Operatoren in einem Kubernetes-Cluster erwirbt, einsetzt und verwaltet. Wie ein Operator für jede Anwendung erweitert OLM Kubernetes durch benutzerdefinierte Ressourcen und benutzerdefinierte Controller, so dass auch Operatoren deklarativ mit Kubernetes-Tools über die Kubernetes-API verwaltet werden können.
OLM definiert ein Schema für Operator-Metadaten, die sogenannte Cluster Service Version (CSV), um einen Operator und seine Abhängigkeiten zu beschreiben. Operatoren mit einer CSV können als Einträge in einem Katalog aufgeführt werden, der für OLM auf einem Kubernetes-Cluster verfügbar ist. Nutzer/innen abonnieren dann einen Operator aus dem Katalog, um OLM anzuweisen, den gewünschten Operator bereitzustellen und zu verwalten. Dieser Operator wiederum stellt seine Anwendung oder seinen Dienst auf dem Cluster bereit und verwaltet sie.
Basierend auf der Beschreibung und den Parametern, die ein Operator in seiner CSV angibt, kann OLM den Operator über seinen Lebenszyklus hinweg verwalten: seinen Zustand überwachen, Maßnahmen ergreifen, um ihn am Laufen zu halten, zwischen mehreren Instanzen in einem Cluster koordinieren und ihn auf neue Versionen aktualisieren. Der Operator wiederum kann seine Anwendung mit den neuesten Automatisierungsfunktionen für die neuesten Versionen der Anwendung steuern.
Operator Metering
Operator Metering ist ein System zur Analyse der Ressourcennutzung der Operatoren, die auf Kubernetes-Clustern laufen. Metering analysiert Kubernetes CPU-, Speicher- und andere Ressourcenmetriken, um die Ressourcenkosten für Infrastrukturdienste zu berechnen. Es kann auch anwendungsspezifische Metriken untersuchen, z. B. solche, die für die nutzungsabhängige Abrechnung von Anwendungsnutzern erforderlich sind. Metering bietet ein Modell für Betriebsteams, mit dem sie die Kosten eines Cloud-Dienstes oder einer Cluster-Ressource der Anwendung, dem Namensraum und dem Team zuordnen können, das sie nutzt. Es ist eine Plattform, auf der du individuelle Berichte erstellen kannst, die speziell auf deinen Operator und die von ihm verwaltete Anwendung zugeschnitten sind, und die dir bei drei Hauptaufgaben hilft:
- Budgetierung
-
Durch den Einsatz von Operatoren auf ihren Clustern können Teams Einblicke in die Nutzung von Infrastrukturressourcen gewinnen, insbesondere in autoskalierten Clustern oder hybriden Cloud-Implementierungen, und so Prognosen und Zuweisungen verbessern, um Verschwendung zu vermeiden.
- Abrechnung
-
Wenn du einen Operator aufbaust, der zahlenden Kunden einen Dienst anbietet, kann die Ressourcennutzung durch Codes oder Etiketten verfolgt werden, die die interne Struktur eines Operators und einer Anwendung widerspiegeln, um genaue und aufgeschlüsselte Rechnungen zu berechnen.
- Aggregation von Metriken
-
Dienstnutzung und Metriken können über Namensräume oder Teams hinweg betrachtet werden. So kannst du zum Beispiel den Ressourcenverbrauch eines PostgreSQL-Datenbankbetreibers analysieren, der viele Datenbankserver-Cluster und sehr viele Datenbanken für verschiedene Teams betreibt, die sich einen großen Kubernetes-Cluster teilen.
Zusammenfassung
In diesem Kapitel wurden die drei Säulen des Operator Frameworks vorgestellt: das Operator SDK für die Erstellung und Entwicklung von Operatoren, der Operator Lifecycle Manager für die Verteilung, Installation und Aktualisierung von Operatoren und das Operator Metering zur Messung der Leistung und des Ressourcenverbrauchs von Operatoren. Zusammen unterstützen diese Framework-Elemente den Prozess, einen Operator zu erstellen und ihn am Laufen zu halten.
Du hast auch das Tool operator-sdk
installiert und bist damit mit dem wichtigsten Werkzeug für die Erstellung von Operatoren ausgestattet. Um loszulegen, stellen wir dir zunächst die Beispielanwendung vor, für die du einen Operator erstellen wirst: die Besucherseite.
Get Kubernetes Operators 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.