- 发布于
k8s集群中使用flyway迁移sql脚本
1821-–
- 作者
- 姓名
- zhli
flyway是一款常用的数据迁移工具,以下Job可用于在k8s集群中执行任务:
- 从镜像中copy出sql迁移脚本
- 等待mysql服务可用后,用flyway镜像执行sql迁移脚本
apiVersion: batch/v1
kind: Job
metadata:
name: xxx-migrate
spec:
backoffLimit: 0
ttlSecondsAfterFinished: 60
template:
metadata:
name: xxx-migrate
spec:
restartPolicy: Never
initContainers:
- name: xxx
image: xxx:1.0.0
command: ['sh', '-c', "mkdir -p /app/sql && cp /app/sql/*.sql /tmp/sql"]
volumeMounts:
- name: sql-volume
mountPath: /tmp/sql
- name: busybox
image: busybox:1.28
command: ['sh', '-c', "until nc -z -w 1 mysql 3306; do echo waiting for db; sleep 2; done"]
containers:
- name: flyway
image: flyway/flyway:9-alpine
command: ["flyway", "migrate", "-url=jdbc:mysql://mysql", "-schemas=xxx", "-user=root", "-password=pwd","-connectRetries=3"]
volumeMounts:
- name: sql-volume
mountPath: /flyway/sql
volumes:
- name: sql-volume
emptyDir: {}