Quickstart
This guide aims to provide a quick way to get started with the MariaDB Enterprise Operator for Kubernetes. It will walk you through the process of deploying a MariaDB Enterprise Cluster and MaxScale via the MariaDB
and MaxScale
CRs (Custom Resources) respectively.
Before you begin, ensure you meet the following prerequisites:
The first step will be configuring a Secret
with the credentials used by the MariaDB
CR:
apiVersion: v1 kind: Secret metadata: name: mariadb stringData: password: MariaDB11!
kubectl apply -f secret.yaml
Next, we will deploy a MariaDB Enterprise Cluster (Galera) using the following CR:
apiVersion: enterprise.mariadb.com/v1alpha1 kind: MariaDB metadata: name: mariadb-galera spec: rootPasswordSecretKeyRef: name: mariadb key: password imagePullSecrets: - name: mariadb-registry maxScaleRef: name: maxscale-galera username: mariadb passwordSecretKeyRef: name: mariadb key: password database: mariadb storage: size: 1Gi replicas: 3 galera: enabled: true
kubectl apply -f mariadb-galera.yaml
Let's break it down:
rootPasswordSecretKeyRef
: A reference to aSecret
containing the root password.imagePullSecrets
: The name of theSecret
containing the customer credentials to pull the MariaDB Enterprise Server image.maxScaleRef
: The name of theMaxScale
CR that we will be creating right after.username
,passwordSecretKeyRef
anddatabase
: The initial user and database to create.storage
: The size of the volume that will back the data directory.replicas
: The number of MariaDB Enterprise Server instances to deploy.galera
: Configuration for the Galera clustering.
After applying the CR, we can observe the MariaDB Pods
being created:
❯ kubectl get pods NAME READY STATUS RESTARTS AGE mariadb-galera-0 2/2 Running 0 101s mariadb-galera-1 2/2 Running 0 101s mariadb-galera-2 2/2 Running 0 101s
Now, let's deploy a MaxScale
CR:
apiVersion: enterprise.mariadb.com/v1alpha1 kind: MaxScale metadata: name: maxscale-galera spec: imagePullSecrets: - name: mariadb-registry mariaDbRef: name: mariadb-galera replicas: 2
kubectl apply -f maxscale-galera.yaml
Again, let's break it down:
imagePullSecrets
: The name of theSecret
containing the customer credentials to pull the MaxScale image.mariaDbRef
: A reference to theMariaDB
CR that we want to connect to.replicas
: The number of MaxScale instances to deploy.
After applying the CR, we can observe the MaxScale Pods
being created, and that both the MariaDB
and MaxScale
CRs will become ready eventually:
❯ kubectl get pods mariadb-galera-0 2/2 Running 0 10m mariadb-galera-1 2/2 Running 0 10m mariadb-galera-2 2/2 Running 0 10m maxscale-galera-0 1/1 Running 0 81s maxscale-galera-1 1/1 Running 0 81s ❯ kubectl get maxscale NAME READY STATUS PRIMARY AGE maxscale-galera True Running mariadb-galera-0 65s ❯ kubectl get mariadb NAME READY STATUS PRIMARY UPDATES AGE mariadb-galera True Running mariadb-galera-0 ReplicasFirstPrimaryLast 10m
To conclude, let's connect to the MariaDB Enterprise Cluster through MaxScale using the initial user and database we initially defined in the MariaDB
CR:
❯ kubectl run mariadb-connect --rm -it --image=docker.mariadb.com/enterprise-server:11.4.4-2 -- bash -c "mariadb -u mariadb -p'MariaDB11!' --ssl=false -h maxscale-galera" If you don't see a command prompt, try pressing enter. MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mariadb | +--------------------+ 2 rows in set (0.001 sec)
Refer to the documentation, the API reference and the examples catalog for further detail.