apiVersion: v1 kind: Service metadata: name: wrestlingdev-mariadb labels: app: wrestlingdev spec: ports: - port: 3306 selector: app: wrestlingdev tier: mariadb clusterIP: None --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wrestlingdev-mariadb-pv-claim labels: app: wrestlingdev spec: # storageClassName: standard accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: wrestlingdev-mariadb labels: app: wrestlingdev spec: selector: matchLabels: app: wrestlingdev strategy: type: Recreate template: metadata: labels: app: wrestlingdev tier: mariadb annotations: prometheus.io/port: "9125" prometheus.io/scrape: "true" spec: containers: - image: mariadb:10.3 name: mariadb env: - name: MARIADB_ROOT_PASSWORD valueFrom: secretKeyRef: name: wrestlingdev-secrets key: dbpassword ports: - containerPort: 3306 name: mariadb volumeMounts: - name: wrestlingdev-mariadb-persistent-storage mountPath: /var/lib/mysql - name: mysettings-config-volume mountPath: /etc/mysql/mariadb.conf.d # resources: # limits: # memory: "512Mi" # requests: # memory: "256Mi" # cpu: "0.2" - image: jcwimer/mariadb-rclone-backup-docker:10.3 name: mariadb-backup env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: wrestlingdev-secrets key: dbpassword - name: CRON_SCHEDULE value: "*/5 * * * *" # every 5 minutes - name: DB_USERNAME valueFrom: secretKeyRef: name: wrestlingdev-secrets key: dbusername - name: DB_HOST value: "127.0.0.1" - name: DAYS_TO_KEEP value: "7" - name: RCLONE_TYPE valueFrom: secretKeyRef: name: wrestlingdev-secrets key: rclone_type - name: S3_ACCESS_ID valueFrom: secretKeyRef: name: wrestlingdev-secrets key: s3_access_id - name: S3_ACCESS_KEY valueFrom: secretKeyRef: name: wrestlingdev-secrets key: s3_access_key - name: S3_ENDPOINT valueFrom: secretKeyRef: name: wrestlingdev-secrets key: s3_endpoint - name: S3_REGION valueFrom: secretKeyRef: name: wrestlingdev-secrets key: s3_region - name: RCLONE_EXTRA_ARGS valueFrom: secretKeyRef: name: wrestlingdev-secrets key: rclone_extra_args - name: RCLONE_PATH valueFrom: secretKeyRef: name: wrestlingdev-secrets key: rclone_path volumeMounts: - name: wrestlingdev-mariadb-persistent-storage mountPath: /var/lib/mysql # resources: # limits: # memory: "100Mi" # requests: # memory: "50Mi" # cpu: "0.1" - image: prom/mysqld-exporter:v0.11.0 name: mariadb-exporter ports: - containerPort: 9125 name: "http" args: - --web.listen-address=0.0.0.0:9125 - --web.telemetry-path=/metrics - --collect.heartbeat - --collect.heartbeat.database=sys_operator env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: wrestlingdev-secrets key: dbpassword - name: DB_USERNAME valueFrom: secretKeyRef: name: wrestlingdev-secrets key: dbusername - name: DB_HOST value: "127.0.0.1:3306" - name: DATA_SOURCE_NAME value: $(DB_USERNAME):$(DB_PASSWORD)@($(DB_HOST))/ - name: DAYS_TO_KEEP value: "7" # resources: # limits: # memory: "128Mi" # requests: # memory: "32Mi" # cpu: "10m" livenessProbe: httpGet: path: /metrics port: 9125 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 30 volumes: - name: wrestlingdev-mariadb-persistent-storage persistentVolumeClaim: claimName: wrestlingdev-mariadb-pv-claim - name: mysettings-config-volume configMap: name: mariadb-mysettings --- apiVersion: v1 kind: ConfigMap metadata: name: mariadb-mysettings labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: EnsureExists data: 70-mysettings.cnf: | [mariadb] # Slow log slow_query_log=1 #slow_query_log_file=/var/log/mariadb/slow.log slow_query_log_file=/var/lib/mysql/slow.log long_query_time=0.2 # mysqltunner recommendations tmp_table_size=32M max_heap_table_size=32M performance_schema=ON innodb_log_file_size=32M table_open_cache=4000 # replica settings server_id=2 # Default server_id, can be overridden for master/slave log_bin=mysql-bin # Enable binary logging binlog_format=ROW # Recommended for replication log_slave_updates=ON # Ensure slaves log updates (useful for multi-source replication) sync_binlog=1 # Flush binary logs after each transaction for safety read_only=0 # Default, will be managed by the init script expire_logs_days=7 # Retain binary logs for 7 days # if you want to ignore dbs to replicate # replicate-ignore-db=wrestlingtourney-queue # if you only want to replicate certain dbs replicate-do-db=wrestlingtourney # /etc/mysql/mariadb.conf.d/70-mysettings.cnf