© Liashko/Shutterstock.com
Entwickler Magazin
Eine Einführung in das Operator Framework

Automatisierung mit Kubernetes Operators

In der Kubernetes-Sprache ist ein Operator ein Stück Software, das operatives Wissen (daher der Name) über Betrieb und Installation eines bestimmten Programms oder einer Systemkomponente seinerseits in Software abbildet und damit automatisieren kann. Lernen Sie, wie Sie einen solchen Operator mit Hilfe des Operator SDKs selbst in Go programmieren können.

Martin Helmich


Kubernetes erfreut sich in der DevOps-Szene aktuell größter Beliebtheit; das liegt nicht zuletzt daran, dass Kubernetes – im Zusammenspiel mit der jeweils gewählten Containertechnologie – von Haus aus zahlreiche Möglichkeiten liefert, wiederkehrende Vorgänge einfach zu automatisieren. Dazu zählt beispielsweise das Ausführen von Rolling Updates für Applikationen, die in der Regel ohne Downtime ausgeführt werden können. Bei aller Automatisierung stoßen jedoch auch irgendwann die Kubernetes-Bordmittel an ihre Grenzen. Insbesondere bei Einrichtung und Betrieb besonders komplexer Softwarekomponenten ist immer noch Spezialwissen des Administrators gefragt. Klassische Beispiele für solche Komponenten sind komplexe, zustandsbehaftete und schlimmstenfalls noch geclusterte Anwendungen, wie beispielsweise Datenbanksysteme.

Operators sind ein Ansatz, das Wissen über Set-up und Betrieb solcher Anwendungen in Software zu gießen, um einen noch höheren Automatisierungsgrad zu erreichen. Anfang März startete Red Hat OperatorHub. io [1] – ein Projekt mit dem Ziel, ein zentrales Verzeichnis für solche Operators zu schaffen. Zum aktuellen Zeitpunkt finden sich hier bereits zahlreiche Operators für den Betrieb verschiedenster zustandsbehafteter Anwendungen, wie beispielsweise Apache Kafka, Prometheus, Percona MySQL und andere. Eine Suche auf GitHub [2] offenbart zahlreiche weitere Operators.

Operators und Custom Resources

Eines der Kernprinzipien von Kubernetes besteht darin, dass verschiedene Objekttypen genutzt werden können, um den gewünschten Zustand des Systems zu beschreiben. Kubernetes (genauer gesagt, der Controller Manager [3]) sorgt dann dafür, dass der Ist-Zustand des Systems mit dem gewünschten Zustand übereinstimmt. Erstellt ein Nutzer also ein Deployment-Objekt, sorgt der Controller Manager dafür, dass für dieses Deployment ein ReplicaSet erstellt wird (und für das ReplicaSet wiederum die gewünschte Anzahl Pods).

Die meisten Operators funktionieren nach demselben Prinzip – der Nutzer agiert mit ihnen über Objekte des Kubernetes API – entweder direkt über das API oder beispielsweise kubectl. Statt der Standardtypen bieten zahlreiche Operators sogenannte Custom Resources an. Mit ihnen kann das Kubernetes API um eigene benutzerdefinierte Datentypen erweitert werden. Die Definition eines solchen Datentyps erfolgt ebenfalls wieder über das Kubernetes API in Form einer CustomResourceDefinition (CRD). Listing 1 zeigt, wie solch eine Definition aussehen könnte.

Listing 1ap...

Entwickler Magazin
Eine Einführung in das Operator Framework

Automatisierung mit Kubernetes Operators

In der Kubernetes-Sprache ist ein Operator ein Stück Software, das operatives Wissen (daher der Name) über Betrieb und Installation eines bestimmten Programms oder einer Systemkomponente seinerseits in Software abbildet und damit automatisieren kann. Lernen Sie, wie Sie einen solchen Operator mit Hilfe des Operator SDKs selbst in Go programmieren können.

Martin Helmich


Kubernetes erfreut sich in der DevOps-Szene aktuell größter Beliebtheit; das liegt nicht zuletzt daran, dass Kubernetes – im Zusammenspiel mit der jeweils gewählten Containertechnologie – von Haus aus zahlreiche Möglichkeiten liefert, wiederkehrende Vorgänge einfach zu automatisieren. Dazu zählt beispielsweise das Ausführen von Rolling Updates für Applikationen, die in der Regel ohne Downtime ausgeführt werden können. Bei aller Automatisierung stoßen jedoch auch irgendwann die Kubernetes-Bordmittel an ihre Grenzen. Insbesondere bei Einrichtung und Betrieb besonders komplexer Softwarekomponenten ist immer noch Spezialwissen des Administrators gefragt. Klassische Beispiele für solche Komponenten sind komplexe, zustandsbehaftete und schlimmstenfalls noch geclusterte Anwendungen, wie beispielsweise Datenbanksysteme.

Operators sind ein Ansatz, das Wissen über Set-up und Betrieb solcher Anwendungen in Software zu gießen, um einen noch höheren Automatisierungsgrad zu erreichen. Anfang März startete Red Hat OperatorHub. io [1] – ein Projekt mit dem Ziel, ein zentrales Verzeichnis für solche Operators zu schaffen. Zum aktuellen Zeitpunkt finden sich hier bereits zahlreiche Operators für den Betrieb verschiedenster zustandsbehafteter Anwendungen, wie beispielsweise Apache Kafka, Prometheus, Percona MySQL und andere. Eine Suche auf GitHub [2] offenbart zahlreiche weitere Operators.

Operators und Custom Resources

Eines der Kernprinzipien von Kubernetes besteht darin, dass verschiedene Objekttypen genutzt werden können, um den gewünschten Zustand des Systems zu beschreiben. Kubernetes (genauer gesagt, der Controller Manager [3]) sorgt dann dafür, dass der Ist-Zustand des Systems mit dem gewünschten Zustand übereinstimmt. Erstellt ein Nutzer also ein Deployment-Objekt, sorgt der Controller Manager dafür, dass für dieses Deployment ein ReplicaSet erstellt wird (und für das ReplicaSet wiederum die gewünschte Anzahl Pods).

Die meisten Operators funktionieren nach demselben Prinzip – der Nutzer agiert mit ihnen über Objekte des Kubernetes API – entweder direkt über das API oder beispielsweise kubectl. Statt der Standardtypen bieten zahlreiche Operators sogenannte Custom Resources an. Mit ihnen kann das Kubernetes API um eigene benutzerdefinierte Datentypen erweitert werden. Die Definition eines solchen Datentyps erfolgt ebenfalls wieder über das Kubernetes API in Form einer CustomResourceDefinition (CRD). Listing 1 zeigt, wie solch eine Definition aussehen könnte.

Listing 1ap...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang