现在,values.yaml 有一个部分包含
username: "foo"
password: abc123
我想将 gcloudsecretsversionsaccesslatest--secret="bar" 的输出放在那里,而不是密码。我想我可以在命令行上使用 --values 或 --set 和 $() 来完成此操作,但我尝试使用 helm 而不是 shell。
我找不到有关如何在 helm values.yaml 中运行命令的文档。我认为它是这样的:
password:
command:
- /bin/sh
- -c
- |
- gcloud secrets versions access latest --secret="foo"
但只是不确定。
你不能。
values.yaml
文件中没有用于运行外部命令或执行任何其他类型计算的语法。在 Helm 使用的模板语言中,也没有运行外部命令的工具。
您能做的最好的事情就是在主机的 shell 中运行此命令,并使用像
helm install --set-string
这样的选项将其作为 Helm 值提供。例如,
helm install my-chart . \
--set-string password=$(gcloud secrets versions access latest --secret="foo")
在 CI 系统的上下文中,您可以查询秘密存储并写出包含安装时值的 YAML(或 JSON)文件。然后您可以使用
helm install -f
选项传递该文件。 helm install --set
选项对于嵌套和数组类型值具有复杂的语法(如果您最终拥有这些值),但您可以通过编程方式从 Jenkinsfile
等生成有效的 JSON 文件,而不必担心引用或转义问题。