使用Golang模板动态获取变量

Idi*_*ine 1 go go-templates

我正在使用Golang模板来管理Helm的部署。

我有这样的values.yaml文件:

env: dev
config:
   dev:
       myname: Hi
   live:
       myname: Bye
Run Code Online (Sandbox Code Playgroud)

现在,我想根据环境(开发,实时)获取值。喜欢:

{{ .Values.config. {{.Values.env}} }}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方式行不通,因为它说:

bad character U+007B '{'
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用其他值来获取值?

Xav*_*cas 5

问题来自嵌套模板,这不是golang模板的工作方式。

解决方案取决于数据的内部表示。如果将其表示为嵌套映射,则解决方案是使用管道全局函数index

{{ index .Values.config .Values.env `myname` }}
Run Code Online (Sandbox Code Playgroud)

有关管道的更多信息。

有关全局模板功能的更多信息。