logo
发布于

k8s集群中使用flyway迁移sql脚本

1821-–
作者
  • avatar
    姓名
    zhli

flyway是一款常用的数据迁移工具,以下Job可用于在k8s集群中执行任务:

  1. 从镜像中copy出sql迁移脚本
  2. 等待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: {}