apiVersion: apps/v1 kind: Deployment metadata: name: datamate-database labels: app: datamate tier: database spec: replicas: 1 selector: matchLabels: app: datamate tier: database strategy: type: Recreate template: metadata: labels: app: datamate tier: database spec: initContainers: - name: init-log image: mysql:8 imagePullPolicy: IfNotPresent command: - sh - -c args: - | chown mysql:mysql /var/log/datamate/database chmod 755 /var/log/datamate/database volumeMounts: - name: log-volume mountPath: /var/log/datamate/database subPath: database containers: - name: mysql image: mysql:8 imagePullPolicy: IfNotPresent env: - name: MYSQL_ROOT_PASSWORD value: "password" ports: - containerPort: 3306 volumeMounts: - name: data-volume mountPath: /var/lib/mysql - name: log-volume mountPath: /var/log/datamate/database subPath: database - name: init-sql mountPath: /docker-entrypoint-initdb.d - name: mysql-utf8-config mountPath: /etc/mysql/conf.d volumes: - name: data-volume hostPath: path: /opt/datamate/data/mysql type: DirectoryOrCreate - name: log-volume hostPath: path: /opt/datamate/data/log type: DirectoryOrCreate - name: init-sql configMap: name: datamate-init-sql - name: mysql-utf8-config configMap: name: datamate-mysql-utf8-config --- apiVersion: v1 kind: Service metadata: name: datamate-database labels: app: datamate tier: database spec: type: ClusterIP ports: - port: 3306 targetPort: 3306 protocol: TCP selector: app: datamate tier: database