【发布时间】:2021-03-19 20:13:09
【问题描述】:
所以希望这对 k8s 社区的非 Djangoers 有意义。我会尽力解释设置/推理。
使用 Django,我们有很多所谓的管理命令,我们可以在 Django 应用程序的范围和环境中运行这些命令,这些命令可以真正帮助开发和部署。我敢肯定,大多数其他框架都有相似的概念,如果不完全相同的话。
一个例子是“python manage.py migrate”命令,它确保我们的代码库(迁移脚本)被应用到并反映在相关的数据库中。
大约有。我们可以运行 30 - 50 个核心命令,我们还可以创建自己的命令,以及应用来自任何已安装的第三方应用程序的命令。
无论如何。最重要的一点是我们可以运行很多命令。
现在,我有以下 k8s Job 来运行“迁移”命令:
apiVersion: batch/v1
kind: Job
metadata:
name: asencis-web-migrate-job
spec:
template:
spec:
containers:
- name: asencis-web-migrate-job
image: asencis/asencis-base:latest
imagePullPolicy: Always
command: ['python', 'manage.py', 'migrate']
envFrom:
- configMapRef:
name: asencis-config
- secretRef:
name: asencis-secret
restartPolicy: Never
backoffLimit: 5
此作业实质上是在应用程序范围/环境中运行python manage.py migrate 命令。它就像一个魅力:
$ kubectl apply -f asencis-web-migrate-job.yaml
当我们所有的测试都运行后,它在应用程序的部署中非常有用,然后我们可以构建一个镜像,“推出重启”集群,然后应用任何迁移。这是令人难以置信的无缝。 (我不感谢 k8s 核心团队制作了如此有用的产品!)
无论如何。
我的问题本质上是这样的,我们能否在作业中对上述kubectl apply 命令应用一个参数,以运行我们喜欢的任何命令?
一个例子是:
$ kubectl apply -f asencis-web-job.yaml --command python manage.py migrate
【问题讨论】:
标签: django kubernetes kubernetes-jobs