簡體   English   中英

通過 Kubernetes 作業和持久卷聲明進行 Django 遷移

[英]Django migrations by Kubernetes Job and persistent Volume Claim

在 Kubernetes Django 部署的應用程序上使用 Job 和 Persistent Volume Claim 進行遷移和遷移模型的最佳方法是什么?

持久卷

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: do-block-storage

工作

apiVersion: batch/v1
kind: Job
metadata:
  name: django-migrations-job
spec:
  template:
    spec:
      containers:
        - name: app
          image: user/app:latest
          command: ["/bin/sh", "-c"]
          args: ["python manage.py makemigrations app; python manage.py migrate"]
          volumeMounts:
           - mountPath: "/container-code-dir/app/migrations"
             name: my-do-volume
      volumes:
        - name: my-do-volume
          persistentVolumeClaim:
           claimName: csi-pvc

對我來說看起來不錯。 不確定是否需要在新 Pod 啟動時運行此作業一次或每次?

如果它每次都在 Django 服務 pod 啟動之前運行,也許你可以得到Init Containers 的幫助

例子:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

你可以為部署做同樣的事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM