Neuigkeiten von trion.
Immer gut informiert.

Verwendung PostgreSQL Kubernetes Operator

Im vorherigen Artikel PostgreSQL in Kubernetes und OpenShift wurden die Grundlagen zum Betrieb von PostgreSQL in Containern und Kubernetes vorgestellt. Als ein Option wurde in diesem Beitrag erklärt, wie PostgreSQL mit Helm in Kubernetes betrieben werden kann.
In diesem Beitrag geh es darum, wie das Kubernetes Operator Konzept den Betrieb erleichtern kann und einige prominente Vertreter von Kubernetes Operators zu vergleichen.

Kubernetes Operator und Custom Resource Definition (CRD)

Bei Kubernetes ist ein wesentliches Element die erweiterbare API. Dadurch lassen sich nicht nur die Objekte von Kubernetes selbst verwalten: Die API dient als Integrationspunkt für beliebige andere Systeme. Dazu ist vorgesehen, die API durch eigene Ressourcen, Custom Resource Definitions (oder CRD) zu erweitern. Durch die CRDs werden lediglich die Schemata der API beschrieben. Dazu bedarf es dann noch Anwendungen, die mit diesen Daten arbeiten und den darin definieren Soll-Zustand umsetzen. Diese Programme werden Kubernetes Operator genannt.

Je nach Art der zu erbringenden Dienste ist so ein Operator sehr simpel - er ließt einen Wert, setzt den Zustand um und schreibt ggf. den Ist-Zustand zurück in die API - bis hin zu einer gewissen Komplexität, bei der mehrere verschiedene APIs im Zusammenspiel arbeiten und auch Kubernetes eigene Objekte verwendet werden.

Typische Aufgaben bei PostgreSQL, die durch einen entsprechenden Operator umgesetzt werden können, sind:

  • Bereitstellung einer oder mehrerer PostgreSQL Instanzen

  • Konfiguration von Usern und Zugriffsrechten

  • Automatisiertes periodisches Backup von Datenbankinstanzen

  • Update auf neuere Postgres Versionen

  • Hochverfügbarkeitssetup von Postgres mit Streaming-Replikation o.ä. Verfahren

  • Bereitstellung von Metriken für Monitoring

  • Bereitstellung von Dashboards zur Visualisierung des Monitoring

  • Definition von Alerting-Regeln

  • pgbouncer Postgres-Proxy Bereitstellung

  • Abbildung von Topologieanforderungen auf den Kubernetes Cluster

  • TLS Absicherung der Postgres Verbindungen

Dabei kann die Umsetzung sowohl als PostgreSQL im Kubernetes Cluster erfolgen, als auch außerhalb, so dass die Kubernetes API lediglich als Zustandsservice mit Authentifizierung und Validierung genutzt wird.

Installation PostgreSQL Operator mit kubectl

Ein Kubernetes Operator samt der zugehörigen Kubernetes Custom Resource Definitions wird durch die Kubernetes API selbst installiert. Typischerweise mit kubectl als Kommandozeilen-Client von Kubernetes.

Dazu wird typischerweise zunächst ein separater Kubernetes Namespace erzeugt, in dem die CRDs dann installiert werden. Anschließend kann die Implementierung, also der eigentliche Operator, installiert werden.

Beispiel Installation von Percona PostgreSQL Operator
$ git clone -b v1.1.0 https://github.com/percona/percona-postgresql-operator
$ cd percona-postgresql-operator
$ kubectl create namespace pgo
$ kubectl -n pgo apply -f deploy/cr.yaml
$ kubectl -n pgo apply -f deploy/operator.yaml

Für die verschiedenen PostgreSQL Objekte, wie z.B. eine Datenbankinstanz oder den pgbouncer Proxy, werden dann entsprechende eigene APIs bereitgestellt. Das erfolgt dann im API Namespace des jeweiligen Operators. So kann dann beispielsweise ein neues Objekte vom Typ

kind: example.com/postgres
apiVersion: database/v1

wie andere Kubernetes Objekte auch erstellt werden. Auch die weitere Konfiguration zur Laufzeit, wie bspw. die Anzahl Repliken oder ob ein regelmäßiges Backup von PostgreSQL erstellt werden soll, kann dann eingestellt werden.

RedHat OperatorHub

In OpenShift ist der RedHat OperatorHub direkt integriert. Darüber lassen sich sowohl kostenlose als auch kostenpflichtige Operators komfortabel über die Weboberfläche installieren.

Sehr praktisch dabei: Werden neue Istanzen einer Custom Resource angelegt, kann ein Operator dafür ein Formular bereitstellen. Damit muss kein YAML ausgefüllt werden, sondern es läßt sich unter Verwendung von Formularfeldern und sgoar mit Hilfetexten arbeiten.

Prominente PostgreSQL Kubernetes Operatoren

Crunchy Data Postgres Operator

Der Postgres Operator von Crunchy Data wird unter der Apache 2 Lizenz bereitgestellt.
GitHub: https://github.com/CrunchyData/postgres-operator aktuell über 3k Stars.

Der Crunchy bietet von Replikation über Backup und Monitoring alle wichtigen Features für den produktiven Einsatz von PostgreSQL in Kubernetes.

Die Firma CrunchyData, die auch Enterprise Support für PostgreSQL bietet, ist maßgeblicher Entwickler und Sponsor des Operators. CrunchyData entwickelte den Operator für die Community und als Ergebnis auf entsprechenden Bedarf der eigenen Kunden. CrunchyData ist unter https://www.crunchydata.com/ zu finden.

Zalando Postgres Operator

Der Online Versand Zalando aus Deutschland setzt strategisch auf PostgreSQL als Datenbanksystem. Von Zalando - https://zalando.de/ - ist aus dem internen Bedarf heraus der Zalando Postgre Operator entstanden.

Der Operator bietet alle wichtigen Features, die für einen produktiven Betrieb erforderlich sind. Unter https://github.com/zalando/postgres-operator ist das GitHub Repository zu finden, das mit mehr als 2.9k Stars bewertet ist.

EDB Postgres for Kubernetes

Enterprise DB bietet kommerziellen Support für PostgreSQL an. Unter dem Namen EDB Postgres for Kubernetes (vormals "Enterprise DB Cloud Native PostgreSQL") bietet Enterprise DB einen eigenen Operator an, dessen Funktionsumfang Der Operator von Enterprise DB ist im Gegensatz zu den anderen hier vorgestellten Operatoren keine OpenSource Software.

Die Installation ist bei Verwendung von OpenShift dafür sehr einfach: Enterprise DB ist im OpenShift OperatorHub von RedHat verfügbar.

Percona Distribution for PostgreSQL Operator

Percona bietet kommerziellen Support für MySQL, MariaDB und PostgreSQL an. Ursprünglich startete Percona mit MySQL, erst später stieß PostgreSQL als Produkt hinzu.

Entsprechend hat der Percona PostgreSQL Operator auch nicht einen entsprechenden Ruf und kann auf GitHub lediglich etwas über hundert Sterne vorweisen. Der Operator steht unter der Apache 2 Lizenz als OpenSource zur Verfügung und bietet ebenfalls alle wichtigen Features für einen produktiven Betrieb. Der Percona Postgres Operator ist unter https://github.com/percona/percona-postgresql-operator zu finden.

Fazit

Kubernetes bietet eine Plattform für hochwertige Abstraktionen über den Lebenszyklus von typischen Infrastrukturkomponenten. Dadurch ist ein hoher Automatisierungsgrad erzielbar und Teamressourcen lassen sich gezielter in Bereichen hoher Wertschöpfung fokussieren.

Die Auswahl des passenden Operators ist jedoch nicht trivial: Es gibt neben den hier vorgestellten Operatoren noch weitere.
In jedem Fall lohnt es sich jedoch, das Thema intensiv zu beleuchten, wenn der Betrieb von PostgreSQL im Cluster auf der Agenda steht.




Zu den Themen Kubernetes, Docker und Cloudarchitektur bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:

Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.

Feedback oder Fragen zu einem Artikel - per Twitter @triondevelop oder E-Mail freuen wir uns auf eine Kontaktaufnahme!

Zur Desktop Version des Artikels