MySQL auf Kubernetes - gut/schlecht/hässlich
Die meisten Applikationen kommen auch im 21. Jahrhundert nicht ohne Datenbank aus. Die beliebteste (in meinen technischen Kulturkreisen) ist MySQL. Der Dienst soll moeglichst leicht installierbar sein, am bestem im Self-Service. Wartungsarmut ist nicht von Nachteil. Dennoch sind die Daten sicher, vor Fremdzugriffen oder bei Ausfällen.
Die derzeit bequemste Moeglichkeit, eine MySQL Datenbank im Kubernetes Cluster zu erstellen, ist der Operator. Der User deployt "ein Stück Datenbank" im Cluster, etwa mit Kind: Database
und dann passiert schon irgendwas. Was das ist, haengt von der Implementierung ab. Das kann das einfache Erstellen einer Datenbank irgendwo sein - entweder im Cluster selber oder als Cloud Resource extern. Dann haengt es noch vom Funktionsumfang ab, welchen Komfort der User erwarten kann. Entweder wird bloss die Datenbank erstellt, oder der User kann sie noch konfigurieren, skalieren, Backups erstellen/zurueckspielen, oder das passiert alles gar automatisch. Der Leistungsumfang wird als Operator Pattern bezeichnet und reicht von Stufe 1-5.
Oracle Operator to deploy Galera Cluster
Dieser Operator ist ein offizielles Oracle Produkt und funktioniert Out of the Box. Man kann einen InnoDB Cluster erstellen, Backups anfertigen und Logs anschauen. Leider ist der Operator als "non-productive" markiert. Geschrieben ist der Operator in Python.
Quellcode: https://github.com/mysql/mysql-operator
Level: 3-4
Orange OpenSource Galera Operator
Dieser Operator besticht durch seine einfache Bedienung und grossem Funktionsumfang. Er ist in Go geschrieben, hat aber keine Service Resourcen, die muss man sich in Kubernetes selbst hinzufuegen. Die anderen Resourcen wie das Operator Deployment sind IM Code selbst verankert, nicht einfach zu warten. Usermanagement fuer die Datenbank gibt es keins. Das Projekt ist mittlerweile auf Github archiviert.
Quelle: https://github.com/Orange-OpenSource/galera-operat
MariaDB Operator
Der Entwickler dieses Operators hat eine ganz andere Anwendungssicht. Es werden nur Single-Instanzen von MariaDB installiert, keine Cluster.
Einige Namen von Resourcen sind auch hart codiert und lassen sich nur durch Patches ueberschreiben. Normalerweise funktioniert ein Operator cluster-weit, nicht dieser - MariaDB Operator funktioniert nur im eigenen Namespace. Geschrieben ist das Programm in Go. Es sah lange Zeit so aus, als waere es nicht mehr gewartet, aber in juengster Zeit gibgt es wieder Aktivitaeten. Vom Funktionsumfang hat man sich an den Operator Approach gehalten, also man kann die Datenbank skalieren und es werden Metriken zur Verfuegung gestellt
Quelle: https://github.com/abalki001/mariadb-operator
Oracle Cloud DB Operator
Dieser Operator funktioniert nur in der Oracle Cloud. Dennoch ist er hier aufgefuehrt, da es einen sehr guten Blog Post zum Thema gibt. Und wer weiss, vielleicht benutzt ja jemand auch diesen Service.
Quelle: https://github.com/oracle/oci-service-operator
Das wars auch schon. Wer unzufrieden mit dem Angebot ist, kann sich selbst auf den Weg machen, einen Operator zu erstellen. Die Kubernetes Community bietet da schon sehr gute Beispiele. Ein Selbstversuch fuer OTC RDS.
Viel Spass!
1 Kommentar
Kommentar von: Eumel Besucher

Der Oracle Mysql Operator fuer InnoDB wurde mittlerweile weiterentwickelt und ist nicht mehr als non-productive markiert. https://github.com/mysql/mysql-operator
Neu in der Runde: https://github.com/mmontes11/mariadb-operator