如何在 helm values.yaml 中运行命令来获取值?

问题描述 投票:0回答:1

现在,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"

但只是不确定。

kubernetes-helm
1个回答
0
投票

你不能。

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 文件,而不必担心引用或转义问题。

© www.soinside.com 2019 - 2024. All rights reserved.