我有一个HELM图表,其中有一些要求(即子图表)。
在部署该图表时,我使用values.yaml
包含主图表和子图表的所有值:
globalFoo: "bar"
subchart1:
foo: subchart1-{{ globalFoo }}
subchart2:
localFoo: "bar2"
foo: subchart2-{{ subchar2.bar2 }}
我想实现两件事:
上面的示例不起作用。我尝试了几种语法,但没有一个起作用。我在HELM文档中找不到类似的东西。
这可行吗?
答案 0 :(得分:1)
在子图值中引用先前声明的全局变量,在同一子图范围内引用先前声明的局部变量
这可以在某种程度上使用 anchors and aliases 实现。
global:
foo: &global-foo bar
subchart1:
# this verbatim copies the content of the anchor
foo: *global-foo
local: &subchart1-local bar
subchart2:
foo: *subchart1-local
值可以自然地组合在一个 helm 模板中:
kind: ConfigMap
...
data:
FOO: "subchart2-{{ .Values.subchart2.foo }}"
如果发现自己需要“模板化值”,tpl
function 可能会有所帮助:
# values
global:
user: foo
pass: bar
dbhost: dbserver.com
mychart:
connection: "db://{{.d.user}}:{{d.pass}}/{{d.dbhost}}"
# template
kind: ConfigMap
...
data:
DBURL: "{{ tpl .Values.mychart.connection (dict "d" .Values.global "Template" $.Template }}"
请注意,(dict ...)
语法源自 hint in this helm github comment。这有助于通过提供“.d”上下文而不是“.Values”来缩短模板字符串,即 .d.user
是 .Values.global.user