Überblick
Ein Kubernetes Operator ist eine Methode zur Paketierung, Bereitstellung und Verwaltung einer Kubernetes-Anwendung. Kubernetes-Anwendungen werden mithilfe der Kubernetes-API (Application Programming Interface) und dem kubectl-Tooling auf Kubernetes bereitgestellt und verwaltet.
Ein Kubernetes Operator ist ein anwendungsspezifischer Controller, der die Funktionalität der Kubernetes-API erweitert, um Instanzen komplexer Anwendungen für einen Kubernetes-Nutzer zu erstellen, zu konfigurieren und zu verwalten.
Hierzu werden allgemeine Kubernetes-Konzepte für Ressourcen und Controller herangezogen. Allerdings sind auch domain- oder anwendungsspezifische Kenntnisse zur Automatisierung des gesamten Lifecycles der verwalteten Software erforderlich.
In Kubernetes werden von Controllern der Control Plane Kontrollschleifen implementiert, die den gewünschten und aktuellen Status des Clusters wiederholt miteinander vergleichen. Wenn der aktuelle Status des Clusters nicht mit dem gewünschten Status übereinstimmt, ergreift der Controller Maßnahmen zur Problembehebung.
Ein Operator ist ein benutzerdefinierter Kubernetes-Controller, der Custom Resources (CR) zur Verwaltung von Anwendungen und der zugehörigen Komponenten verwendet. Allgemeine Konfiguration und Einstellungen werden vom Nutzer in einer CR bereitgestellt. Der Kubernetes Operator übersetzt die allgemeinen Anweisungen basierend auf den in seiner Logik eingebetteten Best Practices in einzelne Aktionen.
Custom Resources sind die API-Erweiterungsmechanismen in Kubernetes. Eine Custom Resource Definition (CRD) definiert eine CR und listet alle für den Nutzer des Operators verfügbaren Konfigurationen auf.
Der Kubernetes Operator überwacht den CR-Typ und leitet anwendungsspezifische Aktionen ein, um den aktuellen Status der Ressource an den gewünschten Status anzupassen.
Mithilfe von Kubernetes Operators werden neue Objekttypen in Form von Custom Resource Definitions bereitgestellt. Custom Resource Definitions können mit der Kubernetes-API wie integrierte Objekte behandelt werden, inklusive der Interaktion via kubectl und der Integration in RBCA-Richtlinien (Role-based Access Control).
Kubernetes Operators überwachen Anwendungen während ihrer Ausführung und können automatisch Daten sichern, das System nach Fehlern wiederherstellen und Anwendungen kontinuierlich upgraden.
Mit einem Kubernetes Operator lassen sich praktisch alle erdenklichen Aktionen durchführen: die Skalierung komplexer Apps, Upgrades der Anwendungsversion und sogar die Verwaltung von Kernel-Modulen für Knoten in einem Computing-Cluster mit spezialisierter Hardware.
Wie Operators Kubernetes-Anwendungen verwalten
Mit Kubernetes lassen sich zustandslose Anwendungen wie Webanwendungen, mobile Backends und API-Services verwalten und skalieren, ohne dass hierfür zusätzliche Kenntnisse zur Funktionsweise dieser Anwendungen erforderlich sind. Die integrierten Features von Kubernetes sind auf eine einfache Handhabung dieser Aufgaben ausgelegt.
Allerdings erfordern zustandsbehaftete Anwendungen, wie Datenbanken und Überwachungssysteme, zusätzliche domainspezifische Informationen, die Kubernetes allerdings nicht besitzt. Diese Informationen werden benötigt, um diese Anwendungen skalieren, upgraden und neu konfigurieren zu können.
Mithilfe von Kubernetes Operators werden diese domainspezifischen Informationen in Kubernetes-Erweiterungen codiert, damit der Anwendungs-Lifecycle verwaltet und automatisiert werden kann.
Indem sie komplexe manuelle Aufgaben der Anwendungsverwaltung eliminieren, sorgen Kubernetes Operators dafür, dass diese Prozesse skalierbar, wiederholbar und standardisiert werden.
Dazu erleichtern sie Entwicklern die Bereitstellung und Ausführung der grundlegenden Services, von denen ihre Apps abhängig sind.
Infrastruktur-Ingenieuren und -anbietern stellen diese Operators eine konsistente Möglichkeit zur Verteilung von Software auf Kubernetes-Clustern und der Reduzierung des Arbeitsaufwands für den Support durch Identifizierung und Korrektur von Anwendungsproblemen bereit.
Mithilfe von Operators können Sie Code zur Aufgabenautomatisierung schreiben, und zwar weit über die grundlegenden Automatisierungs-Features von Kubernetes hinaus. Teams, die einen DevOps- oder SRE-Ansatz (Site Reliability Engineering) verwenden, können Operators zur Integration von SRE-Praktiken in Kubernetes verwenden.
Die Funktion des Operator Patterns besteht darin, die Verwaltung eines Service durch einen menschlichen Operator nachzuahmen. Ein menschlicher Operator (Bediener) muss ganz genau wissen, wie Apps oder Services funktionieren, wie sie bereitgestellt werden und wie möglicherweise auftretende Probleme zu beheben sind.
Normalerweise schreiben Funktionssicherheitsingenieure oder Operations-Teams die Software zur Verwaltung einer Anwendung. Ein Operator dagegen ist so ausgelegt, dass er die menschlichen Kenntnisse zu Betriebsabläufen in Software codiert, um Kubernetes-Workloads zu verwalten und bereitzustellen und so manuelle Aufgaben zu eliminieren.
Operators sollten vorzugsweise von Personen entwickelt werden, die sich genauestens mit der Geschäftslogik zu Installation, Ausführung und Upgrades einer bestimmten Anwendung auskennen.
Die Erstellung eines Operators beginnt häufig damit, dass Installation und Self-Service-Provisionierung der Anwendung automatisiert werden, gefolgt von komplexeren Automatisierungsfunktionen.
Außerdem gibt es ein praktisches Operator-SDK (Software Development Kit), mit dem Sie Ihre eigenen Kubernetes Operators entwickeln können. Das SDK stellt die Tools zum Erstellen, Testen und Paketieren von Operators bereit, wahlweise mit Helm Charts, Ansible Playbooks oder Golang.
Red Hat Ressourcen
Operator Framework
Das Operator Framework ist ein Open Source-Projekt mit Entwickler- und Runtime-Tools für Kubernetes, mit denen Sie die Entwicklung eines Operators beschleunigen können.
Das Operator Framework umfasst Folgendes:
- Operator-SDK: Ermöglicht Entwicklern die Erstellung von Operators basierend auf ihrem Fachwissen, ohne dass sie sich mit der Komplexität der Kubernetes-API auskennen müssen.
- Operator Lifecycle Management: Überwacht Installation, Updates und Verwaltung des Lifecycles aller in einem Kubernetes-Cluster ausgeführten Operators.
- Operator-Messung: Ermöglicht Nutzungsberichte für Operators, die spezielle Services bereitstellen.
Operators in Red Hat OpenShift verwenden
Red Hat® OpenShift® ist eine unternehmensgerechte Kubernetes-Container-Plattform, auf der Operationen für den gesamten Stack automatisiert werden, um Hybrid Clouds und Multi-Clouds noch einfacher verwalten zu können.
Red Hat OpenShift nutzt Kubernetes Operators für die autonome Ausführung der gesamten Plattform und legt gleichzeitig die Konfiguration nativ über Kubernetes-Objekte offen, was wiederum eine schnelle Installation und häufige, robuste Updates ermöglicht.
In Red Hat OpenShift enthalten ist der eingebettete OperatorHub, eine Registry mit zertifizierten Operators von Softwareanbietern und Open Source-Projekten. Innerhalb des OperatorHub können Sie eine Bibliothek von Operators durchsuchen und installieren, die mit Red Hat OpenShift kompatibel sind und zwecks einfachem Lifecycle-Management paketiert wurden.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.