This is a read-only copy of the MariaDB Knowledgebase generated on 2025-04-22. For the latest, interactive version please visit https://mariadb.com/kb/.

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 a Secret containing the root password.
  • imagePullSecrets: The name of the Secret containing the customer credentials to pull the MariaDB Enterprise Server image.
  • maxScaleRef: The name of the MaxScale CR that we will be creating right after.
  • username, passwordSecretKeyRef and database: 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 the Secret containing the customer credentials to pull the MaxScale image.
  • mariaDbRef: A reference to the MariaDB 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.

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.