apiVersion: v1
kind: Service
metadata:
  name: premium-metadb
spec:
  ports:
    - name: mysql
      port: 3306
      targetPort: mysql
  selector:
    app.kubernetes.io/name: premium-metadb
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: premium-metadb-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: premium-metadb
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app.kubernetes.io/name: premium-metadb
  template:
    metadata:
      labels:
        app.kubernetes.io/name: premium-metadb
    spec:
      containers:
        - name: mysql
          image: mysql:8.0
          args:
            - "--sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
            - "--max-connections=2048"
          ports:
            - name: mysql
              containerPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: cp9-local
          volumeMounts:
            - name: initdb
              mountPath: /docker-entrypoint-initdb.d
            - name: data
              mountPath: /var/lib/mysql
          readinessProbe:
            exec:
              command: ["mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-pcp9-local"]
            initialDelaySeconds: 5
            periodSeconds: 5
      volumes:
        - name: initdb
          configMap:
            name: premium-metadb-init
        - name: data
          persistentVolumeClaim:
            claimName: premium-metadb-data
