在k8s cronjob中,我可以从configmap(或类似的东西)中提取动态使用的镜像(或标签)吗?
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:{my-dynamic-tag-here}
字符串
我的用例是,我有很多cron作业,它们在不同的时间被创建,我需要在稍后的时间对它们使用的图像/标签进行更改。
2条答案
按热度按时间xoshrz7s1#
必须在Kubernetes清单中直接指定
image:
的值。在Kubernetes中没有任何东西可以执行任何类型的查找、替换或间接引用来修改该值。设置此图像是Helm或Kustomize等 Package 器工具最有用的功能之一。我最熟悉的是Helm。在那里,您可以使用Helm的模板语言在部署时注入image标记
字符串
然后在实际部署时,可以在命令行中指定该值,
型
还有一个传递YAML(或JSON)部署时配置值文件的路径,如果您的CI工具可以写入此文件,则该路径会更清晰。
Kustomize具有到change the
image:
value特定路径。同样,这涉及到您的CI工具写出Kustomization捆绑包,或者运行kustomize edit
CLI工具在部署时对其进行修改。puruo6ea2#
当然,您可以使用图像标签
latest
。然而,这不是一个好主意,因为您永远无法确定标签的最新版本中到底部署了什么。您可以从环境变量中提取图像标签版本。This answer讨论了如何做到这一点的几种可能性。这种方法将给予您能够通过
.env
文件控制版本。