kubernetes k8s cronjob -从配置Map中获取图像(标记)?

f0brbegy  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(126)

在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作业,它们在不同的时间被创建,我需要在稍后的时间对它们使用的图像/标签进行更改。

xoshrz7s

xoshrz7s1#

必须在Kubernetes清单中直接指定image:的值。在Kubernetes中没有任何东西可以执行任何类型的查找、替换或间接引用来修改该值。
设置此图像是Helm或Kustomize等 Package 器工具最有用的功能之一。我最熟悉的是Helm。在那里,您可以使用Helm的模板语言在部署时注入image标记

# templates/cronjob.yaml
image: busybox:{{ .Values.dynamicTag }}

字符串
然后在实际部署时,可以在命令行中指定该值,

helm upgrade my-app . --set-string dynamicTag=20230710


还有一个传递YAML(或JSON)部署时配置值文件的路径,如果您的CI工具可以写入此文件,则该路径会更清晰。
Kustomize具有到change the image: value特定路径。同样,这涉及到您的CI工具写出Kustomization捆绑包,或者运行kustomize edit CLI工具在部署时对其进行修改。

puruo6ea

puruo6ea2#

当然,您可以使用图像标签latest。然而,这不是一个好主意,因为您永远无法确定标签的最新版本中到底部署了什么。
您可以从环境变量中提取图像标签版本。This answer讨论了如何做到这一点的几种可能性。这种方法将给予您能够通过.env文件控制版本。

相关问题