部署configmap文件用于mysqldump备份数据库所使用的变量:
mysqldump.configmap.yaml 变量文件
apiVersion: v1
kind: ConfigMap
metadata:
name: mysqldump
data:
dbhost: DB host details
db1: db name
all_databases: "true"
部署mysqldump.secret.yaml
Opaque:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据,因此安全性弱。
kubernetes.io/dockerconfigjson:用于存储docker registry的认证信息。
kubernetes.io/service-account-token:用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。
apiVersion: v1
kind: Secret
metadata:
name: mysqldump
type: Opaque
data:
dbuser: user name in base64 encode #注意使用base64加密工具对账户密码进行加密;
dbpass: password in base64 encode
mysqldump.scheduledjob.all.yaml job文件;部署所有的数据库;
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: mysqldump
spec:
schedule: "*/2 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: mysqldump
image: manastri/mysqldump
env:
- name: ALL_DATABASES
valueFrom:
configMapKeyRef:
name: mysqldump
key: all_databases
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: mysqldump
key: dbhost
- name: DB_USER
valueFrom:
secretKeyRef:
name: mysqldump
key: dbuser
- name: DB_PASS
valueFrom:
secretKeyRef:
name: mysqldump
key: dbpass
imagePullPolicy: Always
volumeMounts:
- mountPath: /mysqldump
name: mysqldump
volumes:
- name: mysqldump
hostPath:
path: /home/core/mysqldump
restartPolicy: OnFailure
部署job:
kubectl create -f mysqldump/mysqldump.configmap.yaml
kubectl create -f mysqldump/mysqldump.secret.yaml
kubectl create -f mysqldump/mysqldump.scheduledjob.all.yaml
注:MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,即可登陆成功。