k8s利用jobs完成对mysql数据库的修改插入
需要对一个k8s上mysql数据库修改插入数据,sql语句经常会变动。可以建议使用jobs和configmap的方式完成。1、完成dockerfile,需要安装mysql前台客户端和部署shell脚本。FROM centos7-jdk8COPY init.sh /opt/COPY mysql-community-client-5.7.23-1.el7.x86_64.rpm /opt/...
·
需要对一个k8s上mysql数据库修改插入数据,sql语句经常会变动。
可以建议使用jobs和configmap的方式完成。
1、完成dockerfile,需要安装mysql前台客户端和部署shell脚本。
FROM centos7-jdk8
COPY init.sh /opt/
COPY mysql-community-client-5.7.23-1.el7.x86_64.rpm /opt/
RUN rpm -ivh /opt/mysql-community-client-5.7.23-1.el7.x86_64.rpm --nodeps --force
RUN mkdir /opt/sql
RUN chmod +x /opt
WORKDIR /opt
init.sh脚本:
#!/bin/bash
#execute all script in specified directory
MYDATE=`date +%F'-'%T'-'%w`
MYSQL_PATH=/opt/sql/common #指定的目录
mysql -h127.0.0.1 -uroot -p12345#LC < /opt/sql/init.sql
for file in ${MYSQL_PATH}/*
do
if [ -f "$file" ] ; then
postfix=`echo $file | awk -F'.' '{print "."$NF}'`
if [ $postfix = ".sql" ] ; then
mysql -h127.0.0.1 -uroot -p12345 < $file
fi
fi
done
2、完成jobs
apiVersion: batch/v1
kind: Job
metadata:
name: mysqlinit
spec:
template:
metadata:
labels:
job-name: mysqlinit
spec:
containers:
- name: mysqlinit1
image: mysql-init:1.0.0
command: ["sh", "init.sh"]
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
name: allsmart-config
key: MYSQL_ROOT_PASSWORD
volumeMounts:
- name: init-config
mountPath: /opt/sql
volumes:
- name: init-config
configMap:
name: allsmart-config
items:
- key: cloud.sql
path: common/cloud.sql
- key: config.sql
path: common/config.sql
restartPolicy: Never
执行jobs,即可完成对mysql 的修改插入。
原理:所有的sql文件,如cloud.sql都是通过configmap挂载的,脚本会遍历目录common下的所有sql文件执行,后续需要修改的话,直接修改configmap即可。
需要添加sql也只需要修改jobs的yaml文件。
可以参照此方法完成k8s上数据库的插入部署。
更多推荐
已为社区贡献4条内容
所有评论(0)