问题描述
我已经使用 Helm 将很多东西部署到我的 Kubernetes 集群中。我的 values.yaml 文件包含很多字段。
我想要执行的唯一修改是向我的 cron 作业添加一个额外的环境变量。 (此 cron 作业创建了一个 pod,其中 Python 脚本应该能够读取此环境变量)
apiVersion: batch/v1beta1
kind: CronJob
...
...
containers:
- env:
- name: existing_env_var
value: "dummy_value"
- name: new_env_var # I want to add this one
value: "this is the new one"
更新必须保持旧的未修改值。命令:
helm upgrade [name] [path] --reuse-values
问题是cron 作业没有升级,这意味着我的python 脚本不能使用新的env 变量。我能想到的唯一原因是在 helm 的上下文中没有进行任何更改,因为没有修改任何值。
如何在重用旧值的同时升级我的 CronJob。任何帮助表示赞赏。
解决方法
这与 --reuse-values
标志的定义有关。根据文档here:
--reuse-values : when upgrading,reuse the last release's values and merge in any overrides from the command line via --set and -f
在使用 --reuse-values
时直接从图表中尝试覆盖是行不通的。通过 --set 或 -f 传递新值(这是您要添加到此图表的唯一值)。
这大概意味着您将不得不稍微调整图表以通过值文件将环境变量传递给您的 cron 作业。
这个 article 很好地解释了它的用法。