下面是一个部署MySQL的YAML文件示例,其中使用了ConfigMap来指定my.cnf配置文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
MYSQL_ROOT_PASSWORD: password123
my.cnf: |
[mysqld]
bind-address=0.0.0.0
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
selector:
matchLabels:
app: mysql
replicas: 1 #设置副本数量为1,可以根据需求调整
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql-container # 容器名称为mysql-container,可以自定义修改成你想要的名字。
image: mysql # 使用 MySQL 镜像
envFrom:
- configMapRef:
name: mysql-config # 引用上面定义的 ConfigMap
ports:
- containerPort: 3306 # 暴露容器端口号为3306,外部应用程序可以通过此端口访问MySQL服务。
volumeMounts:
- mountPath : /etc/mysql/my.cnf
subPath : my.cnf
name : config-volume
- mountPath : /var/lib/mysql
name : data-volume
volumes :
- name : config-volume
configMap :
name : mysql-config
- name : data-volume
persistentVolumeClaim :
claimName : pvc-mysql
---
apiVersion : v1
kind : Service
metadata :
name : mysql-service
spec :
selector :
app : mysql
ports :
- protocol : TCP
port : 3306
targetPort : 3306
type : ClusterIP
在上面的配置文件中,我们首先创建了一个ConfigMap对象 mysql-config,并将MySQL的密码和my.cnf配置文件存储在其中。注意配置文件需要使用多行字符串格式。
然后我们定义了一个Deployment对象 mysql-deployment 来部署MySQL服务,并使用上面创建的 ConfigMap 对象中的值来设置环境变量和挂载 my.cnf 配置文件到容器中。
最后,我们还定义了一个Service对象 mysql-service 来暴露MySQL服务,使得其他应用程序可以通过该服务访问MySQL服务。
请注意,在此示例中使用了Persistent Volume Claim (PVC)来为MySQL提供持久化存储。如果您没有提前创建PVC,则需要将其添加到配置文件中以确保它可用。
希望这个示例能够帮助你部署 MySQL 服务并指定 my.cnf 配置文件。




