# MariaDB 10.5 is supported until 2025 # Note that MariaDB 10.6 breaks with Nextcloud # https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/7 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mariadb annotations: keel.sh/policy: patch keel.sh/trigger: poll keel.sh/pollSchedule: "@midnight" spec: revisionHistoryLimit: 0 serviceName: mariadb selector: matchLabels: app: mariadb replicas: 1 template: metadata: labels: app: mariadb annotations: prometheus.io/port: '9104' prometheus.io/scrape: 'true' spec: containers: - name: exporter image: prom/mysqld-exporter:latest env: - name: DATA_SOURCE_NAME value: exporter@tcp(127.0.0.1)/ - name: mariadb image: mariadb:10.5 imagePullPolicy: Always env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mariadb-secrets key: MYSQL_ROOT_PASSWORD - name: MYSQL_USER valueFrom: fieldRef: fieldPath: metadata.namespace - name: MYSQL_DATABASE valueFrom: fieldRef: fieldPath: metadata.namespace - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: mariadb-secrets key: MYSQL_PASSWORD volumeMounts: - name: mariadb-data mountPath: /var/lib/mysql - name: mariadb-init mountPath: /docker-entrypoint-initdb.d volumes: - name: mariadb-init configMap: name: mariadb-init-config # Make sure MariaDB instances run on storage{1..3} nodes, as close # as possible to Longhorn instances tolerations: - key: dedicated operator: Equal value: storage effect: NoSchedule nodeSelector: dedicated: storage volumeClaimTemplates: - metadata: name: mariadb-data spec: storageClassName: longhorn accessModes: - ReadWriteOnce resources: requests: storage: 2Gi --- apiVersion: v1 kind: Service metadata: name: mariadb spec: ports: - protocol: TCP port: 3306 selector: app: mariadb --- apiVersion: v1 kind: ConfigMap metadata: name: mariadb-init-config data: initdb.sql: | CREATE USER 'exporter'@'127.0.0.1' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SLAVE MONITOR, SELECT ON *.* TO 'exporter'@'127.0.0.1';