英文:
Get variables dynamically
问题
我正在使用Go模板来使用Helm管理部署。
我有一个像这样的values.yaml文件:
env: dev
config:
dev:
myname: Hi
live:
myname: Bye
现在我想根据环境(dev,live)获取值。
像这样:
{{ .Values.config. {{.Values.env}} }}
不幸的是,这种方式不起作用,因为它显示:
bad character U+007B '{'
有没有办法使用其他值来获取值?
英文:
I'm using Go templates to manage deployments with Helm.
I have the values.yaml file like this:
env: dev
config:
dev:
myname: Hi
live:
myname: Bye
Now I'd like to get the values depending on the environment (dev, live).
Like:
{{ .Values.config. {{.Values.env}} }}
Unfortunately, this way doesn't work because it says:
bad character U+007B '{'
Is there any way to get the value using others values?
答案1
得分: 7
问题出在嵌套模板上,这不是 Go 模板的工作方式。
解决方案取决于数据的内部表示。如果数据表示为嵌套的映射,可以使用全局函数 index
来解决。
{{ index .Values.config .Values.env `myname` }}
有关管道的更多信息。
有关全局模板函数的更多信息。
英文:
The problem comes from the nested template, this is not how Go templates work.
The solution depends on the internal representation of the data. If it is represented as nested maps, a solution is to use the pipeline global function index
.
{{ index .Values.config .Values.env `myname` }}
More info on pipelines.
More info on global template functions.
答案2
得分: -1
以下可能有效。我没有测试过...
{{ .Values.config.(.Values.env) }}
完整的模板语法可以在text/template
文档中找到。
英文:
The following may work. I didn't test it...
{{ .Values.config.(.Values.env) }}
The full template syntax is found in the text/template
documentation.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论