apiVersion: v1 kind: ConfigMap metadata: name: mysql-m-cnf data: config: |- [mysqld] bind-address=0.0.0.0 port=3306 skip-name-resolve basedir=/var/lib/mysql datadir=/var/lib/mysql/data log-bin=/var/lib/mysql/logs plugin_dir=/var/lib/mysql/plugin socket=/var/lib/mysql/mysql.sock pid-file=/var/lib/mysql/mysqld.pid log-error=/var/lib/mysql/logs/mysqld.log max_allowed_packet=16M character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # Extended sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION binlog_format=row expire_logs_days=30 max_connections=5000 innodb_buffer_pool_size=4G innodb_log_file_size=1G innodb_flush_log_at_trx_commit=2 sync_binlog=0 [client] port=3306 socket=/var/lib/mysql/mysql.sock default-character-set=utf8mb4 plugin_dir=/var/lib/mysql/plugin [manager] port=3306 socket=/var/lib/mysql/mysql.sock pid-file=/var/lib/mysql/mysqld.pid --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-m spec: replicas: 1 serviceName: mysql selector: matchLabels: app: mysql-m template: metadata: labels: app: mysql-m spec: initContainers: - name: init image: busybox imagePullPolicy: IfNotPresent command: - sh - -c - | sysctl -w net.ipv4.tcp_keepalive_time=300 sysctl -w net.ipv4.tcp_keepalive_intvl=10 sysctl -w net.ipv4.tcp_keepalive_probes=3 securityContext: privileged: true containers: - name: mysql image: mysql:8.0.33 env: - name: MYSQL_ROOT_PASSWORD value: "Beaconfire@2099" - name: MYSQL_DATABASE value: "test" - name: MYSQL_USER value: "app" - name: MYSQL_PASSWORD value: "HelloBeaconfire!" volumeMounts: - name: mysql-m mountPath: /var/lib/mysql - name: mysql-m-cnf mountPath: /etc/my.cnf subPath: my.cnf readOnly: true volumes: - name: mysql-m hostPath: path: /data/prod/mysql-m - name: mysql-m-cnf configMap: name: mysql-m-cnf items: - key: config path: my.cnf affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "kubernetes.io/hostname" operator: In values: - bfs-k8snode-10-2-2-90.hetzner.base.beaconfireinc.com tolerations: - key: "app.kubernetes.io/name" operator: "Equal" value: "mysql" effect: "NoSchedule" --- apiVersion: v1 kind: Service metadata: name: mysql-m labels: app: mysql-m spec: ports: - protocol: TCP port: 3306 targetPort: 3306 selector: app: mysql-m type: ClusterIP