4 Minuten Lesezeit (891 Worte)

Der Steuermann und der Delfin: Der MySQL Kubernetes Operator

Die rasante Entwicklung der Cloud-Technologie hat die Art und Weise, wie Unternehmen ihre Anwendungen und Dienste bereitstellen, grundlegend verändert. Cloud-native Architekturen (auch On-premises) bieten Flexibilität, Skalierbarkeit und Robustheit, die es Unternehmen ermöglichen, schneller auf die sich ändernden Anforderungen des Marktes zu reagieren. In diesem Kontext wird der Einsatz von Kubernetes, einem leistungsstarken Orchestrierungstool zur Verwaltung von Anwendungscontainern, immer beliebter. Um die Vorteile der Cloud voll auszuschöpfen, ist jedoch auch eine effiziente Verwaltung von Datenbanken erforderlich. Genau hier kommt der MySQL Kubernetes Operator ins Spiel. Wir stellen Ihnen hier diesen Operator und seine grundlegende Funktionsweise kurz vor. 

Was ist der MySQL Kubernetes Operator?

Der MySQL Kubernetes Operator ist ein Tool, das speziell dafür entwickelt wurde, die Bereitstellung und Verwaltung von MySQL-InnoDB-Clustern in Kubernetes-Clustern zu automatisieren. Ein Operator ist ein Stück Software, welches auf Kubernetes aufsetzt und produktspezifisches Wissen (in unserem Fall für MySQL-Datenbanken) bereitstellt, um komplexe Anwendungen zu steuern.

Der MySQL Operator ermöglicht es Entwicklern und DevOps-Teams, InnoDB-Cluster als Kubernetes-Ressourcen zu behandeln. Dies bedeutet, dass die Bereitstellung, Konfiguration und Wartung von MySQL-Datenbanken (InnoDB-Clustern) auf die gleiche Weise wie die anderer Kubernetes-Ressourcen erfolgen kann. 

Vorteile des MySQL Kubernetes Operators

  1. Automatisierung der Datenbankverwaltung:
    Der Operator automatisiert viele der Routineaufgaben im Zusammenhang mit der Verwaltung und Bereitstellung von MySQL-InnoDB-Clustern. Dies umfasst die Bereitstellung, Konfiguration und sogar die Wiederherstellung im Falle eines Ausfalls.

  2. Stringente Bereitstellung:
    Da der MySQL Operator Kubernetes-Ressourcen verwendet, kann die Bereitstellung der MySQL-Datenbanken eines InnoDB-Clusters stringent und reproduzierbar erfolgen. Dies minimiert potenzielle Fehlerquellen und verbessert die Zuverlässigkeit der Datenbankinfrastruktur und sorgt letztendlich für die Einhaltung von Standards.

  3. Skalierbarkeit:
    Der Operator ermöglicht die einfache Skalierung von MySQL-Datenbanken (innerhalb des Clusters), je nach Lastanforderungen. Mit wenigen Befehlen oder Konfigurationsänderungen kann die Datenbankkapazität (Anzahl der Systeme) erhöht oder reduziert werden.

  4. Backup und Wiederherstellung:
    Die Operator-Funktionen erstrecken sich auch auf Backup- und Wiederherstellungsaufgaben. Dies erleichtert die Sicherung von Daten und die schnelle Wiederherstellung im Notfall.

  5. Upgrade-Verwaltung (Lifecycle-Management):
    Der Operator unterstützt auch das Aktualisieren der MySQL-Datenbankversion. Dies ermöglicht es, auf neue Funktionen zuzugreifen und „Patches" zeitnah einzuspielen.

Wie funktioniert der MySQL Kubernetes Operator?

Der MySQL Operator stellt eine benutzerdefinierte Kubernetes-Ressource (CRD) namens „MySQLCluster“ zur Verfügung. Diese Ressource definiert, wie eine MySQL-Datenbank in einem Kubernetes-Cluster bereitgestellt werden soll. Hier sind einige Schlüsselkonzepte:

  • Objektspezifikation (Spec): In der „Spec“ werden Konfigurationsdetails wie die gewünschte MySQL-Version, die Anzahl der Replikate und Ressourcenlimits festgelegt.
  • Objektstatus: Der Status zeigt den aktuellen Zustand des MySQLClusters an, einschließlich wichtiger Informationen über den Bereitstellungsfortschritt und den Zustand der einzelnen Replikate.
  • Custom Controller: Der Operator enthält einen benutzerdefinierten Controller, der kontinuierlich den Status der MySQLCluster überwacht. Wenn Änderungen erkannt werden, ergreift der Controller die erforderlichen Maßnahmen, um den gewünschten Soll-Zustand sicherzustellen. Hierüber wird der ordnungsgemäße Betrieb überwacht.

Wie verwendet man den MySQL Kubernetes Operator?

Im Vorfeld sei darauf verweisen, dass die folgenden Code-Beispiele auf Grundlage von Docker Desktop entwickelt wurden.

1. Installation: Zunächst muss der MySQL-Operator im Kubernetes-Cluster installiert werden. Dies kann durch das Bereitstellen einer speziellen YAML-Datei oder durch Verwendung von Tools wie Helm erfolgen. In unserem Fall musste vor dem Operator noch etwas Vorarbeit geleistet werden (Installation der „Custom Resource Definition (CRD)“).

# Installation CRD
kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml
customresourcedefinition.apiextensions.k8s.io/innodbclusters.mysql.oracle.com created
customresourcedefinition.apiextensions.k8s.io/mysqlbackups.mysql.oracle.com created
customresourcedefinition.apiextensions.k8s.io/clusterkopfpeerings.zalando.org created
customresourcedefinition.apiextensions.k8s.io/kopfpeerings.zalando.org created

# Installation MySQL Operator
kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml
clusterrole.rbac.authorization.k8s.io/mysql-operator created
clusterrole.rbac.authorization.k8s.io/mysql-sidecar created
clusterrolebinding.rbac.authorization.k8s.io/mysql-operator-rolebinding created
clusterkopfpeering.zalando.org/mysql-operator created
namespace/mysql-operator created
serviceaccount/mysql-operator-sa created
deployment.apps/mysql-operator created

# Status der Installation pruefen
kubectl get deployment mysql-operator --namespace mysql-operator
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
mysql-operator   0/1     1            0           25s
 

2. Erstellen eines MySQLClusters: Nach der Installation des Operators können Entwickler MySQLCluster-Ressourcen definieren. Dies erfolgt in Form von YAML-Dateien, in denen die gewünschten Konfigurationen und Eigenschaften der MySQL-Datenbank festgelegt werden. Im Vorfeld werden in Kubernetes zunächst noch Account-Informationen für die beteiligten Datenbanken hinterlegt:

# Definition von root-Informationen
kubectl create secret generic mysqlroot --from-literal=rootUser=root --from-literal=rootHost=% --from-literal=rootPassword="root"
secret/mysqlroot created

kubectl apply -f mycluster.yaml
innodbcluster.mysql.oracle.com/mycluster created

kubectl get innodbcluster
NAME        STATUS    ONLINE   INSTANCES   ROUTERS   AGE
mycluster   PENDING   0        3           1         3s
 

3. Anwenden der Konfiguration: Durch Anwenden der MySQLCluster-Konfigurationsdatei wird der Operator aktiviert, um die angeforderte MySQL-Datenbank im Cluster zu erstellen und zu verwalten. 

kubectl run --rm -it myshell --image=container-registry.oracle.com/mysql/community-operator -- mysqlsh root@mycluster --sql
If you don't see a command prompt, try pressing enter.
Please provide the password for 'root@mycluster': ****
Save password for 'root@mycluster'? [Y]es/[N]o/Ne[v]er (default No): yes
MySQL Shell 8.1.0

Copyright (c) 2016, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'root@mycluster'
Fetching global names for auto-completion... Press ^C to stop.
Your MySQL connection id is 230 (X protocol)
Server version: 8.1.0 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
MySQL  mycluster:33060+ ssl  SQL > select @@hostname, @@version from dual;
+-------------+-----------+
| @@hostname  | @@version |
+-------------+-----------+
| mycluster-0 | 8.1.0     |
+-------------+-----------+
1 row in set (0.0022 sec)
MySQL  mycluster:33060+ ssl  SQL >
 

Fazit

Der MySQL Kubernetes Operator ist ein leistungsstarkes Werkzeug für die effiziente Verwaltung von MySQL-Datenbanken in Kubernetes-Clustern. Er automatisiert viele der komplexen Aufgaben, die mit der Bereitstellung und Verwaltung von MySQL-InnoDB-Clustern verbunden sind. Er ermöglicht es Entwicklern und DevOps-Teams, sich auf die Entwicklung von Anwendungen zu konzentrieren, anstatt sich um die Feinheiten der Datenbankadministration kümmern zu müssen.

Sie haben Fragen rund um den Betrieb von MySQL-Systemen? Dann sprechen Sie mit uns.

Seminarempfehlungen

Principal Consultant bei ORDIX

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Samstag, 27. Juli 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie