我是Kubernetes/Openshift的一只新蜜蜂。
我正在尝试使用configmap更新MySQL配置。我有下面的yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: slave-replcmap
data:
my.conf: |
[mysqld]
server-id=2
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-slave
spec:
selector:
matchLabels:
app: mysql-slave
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql-slave
spec:
volumes:
- name: slave-mysql-persistent-storage
persistentVolumeClaim:
claimName: slave-nfs-claim1
- name: slave-replcmap-vol
configMap:
name: slave-replcmap
- name: slave-mysqlinitconf-vol
configMap:
name: slave-mysqlinitcmap
containers:
- image: mysql:5.7
name: mysql-slave
env:
- name: MYSQL_SERVER_CONTAINER
value: mysql
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: MYSQL_ROOT_PASSWORD
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-secret
key: MYSQL_DATABASE
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: MYSQL_PASSWORD
ports:
- containerPort: 3306
name: mysql-slave
volumeMounts:
- name: slave-mysql-persistent-storage
mountPath: /var/lib/mysql
- name: slave-mysqlinitconf-vol
mountPath: /docker-entrypoint-initdb.d
- name: slave-replcmap-vol
mountPath: /etc/mysql/my.cnf
subPath: my.conf它更新配置文件中没有任何问题。
但问题在于它从my.cnf文件中删除了现有内容,并添加了configmap数据。我需要在不删除现有数据的情况下将这个configmap数据附加到my.cnf文件中。
请告诉我如何修改yml文件来实现这一点。
提前谢谢。
发布于 2019-12-03 11:58:56
当前的配置将卷直接装入my.cnf文件- mountPath: /etc/mysql/my.cnf。当你这样做的时候,你正在替换它。subPath属性用于按键引用文件。类似的例子可以找到这里。
我已经在本地env上部署了这个映像。作为默认的my.cnf,内部只有一些注释文本,并且:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/这意味着来自两个文件夹的所有配置文件都包含在主配置中。
您可以将此配置挂载到其中一个文件夹中,而不是挂载主配置。例如:
...
mountPath: /etc/mysql/conf.d/new.conf
subPath: my.conf最常见的传递ConfigMaps的方法是描述这里。
我还建议您检查这个MySQL舵图关于MySQL中的配置文件。
发布于 2020-02-27 11:10:21
幸运的是,默认的/etc/mysql/my.cnf包括以下文件夹:/etc/mysql/conf.d/。因此,如果您将自定义配置放在该文件夹中的文件中,那么您就很好了。
您可以按照您的建议使用ConfigMap来实现这一点。
首先创建一个ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-custom-config
data:
my.custom.conf: |
[mysqld]
server-id=2从这个例子中可以看到,这个ConfigMap包含一个名为my.custom.conf的文件。
接下来,将该文件映射到/etc/mysql/conf.d/下的文件
spec:
containers:
- image: mysql:5.7
name: mysql
...
volumeMounts:
- name: mysql-custom-config
mountPath: /etc/mysql/conf.d/custom.my.cnf
subPath: custom.my.cnf #should be the name used in the ConfigMap
volumes:
- name: mysql-custom-config
configMap:
name: mysql-custom-config发布于 2019-11-21 08:35:22
我相信现有my.cnf文件的内容是固定的,.Thus,您可以将my.cnf文件的现有内容添加到您的configmap中。
https://stackoverflow.com/questions/58952613
复制相似问题