forked from k-space/kube
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # 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: mirror.gcr.io/prom/mysqld-exporter:latest
 | |
|         env:
 | |
|         - name: DATA_SOURCE_NAME
 | |
|           value: exporter@tcp(127.0.0.1)/
 | |
|       - name: mariadb
 | |
|         image: mirror.gcr.io/library/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';
 |