使用 ConfigMap 配置 MySQL

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: mysql-myshop-config
  5. data:
  6. # 这里是键值对数据
  7. mysqld.cnf: |
  8. [client]
  9. port=3306
  10. [mysql]
  11. no-auto-rehash
  12. [mysqld]
  13. skip-host-cache
  14. skip-name-resolve
  15. default-authentication-plugin=mysql_native_password
  16. character-set-server=utf8mb4
  17. collation-server=utf8mb4_general_ci
  18. explicit_defaults_for_timestamp=true
  19. lower_case_table_names=1
  20. ---
  21. apiVersion: extensions/v1beta1
  22. kind: Deployment
  23. metadata:
  24. name: mysql-myshop
  25. spec:
  26. replicas: 1
  27. template:
  28. metadata:
  29. labels:
  30. name: mysql-myshop
  31. spec:
  32. containers:
  33. - name: mysql-myshop
  34. image: mysql:8.0.16
  35. imagePullPolicy: IfNotPresent
  36. ports:
  37. - containerPort: 3306
  38. env:
  39. - name: MYSQL_ROOT_PASSWORD
  40. value: "123456"
  41. volumeMounts:
  42. # 以数据卷的形式挂载 MySQL 配置文件目录
  43. - name: cm-vol-myshop
  44. mountPath: /etc/mysql/conf.d
  45. - name: nfs-vol-myshop
  46. mountPath: /var/lib/mysql
  47. volumes:
  48. # 将 ConfigMap 中的内容以文件形式挂载进数据卷
  49. - name: cm-vol-myshop
  50. configMap:
  51. name: mysql-myshop-config
  52. items:
  53. # ConfigMap 中的 Key
  54. - key: mysqld.cnf
  55. # ConfigMap Key 匹配的 Value 写入名为 mysqld.cnf 的文件中
  56. path: mysqld.cnf
  57. - name: nfs-vol-myshop
  58. persistentVolumeClaim:
  59. claimName: nfs-pvc-mysql-myshop
  60. ---
  61. apiVersion: v1
  62. kind: Service
  63. metadata:
  64. name: mysql-myshop
  65. spec:
  66. ports:
  67. - port: 3306
  68. targetPort: 3306
  69. type: LoadBalancer
  70. selector:
  71. name: mysql-myshop
# 查看 ConfigMap、
kubectl get cm
kubectl describe cm <ConfigMap Name>