我有一个 HELM 图表,有一些要求(即子图表)。
部署该图表时,我使用values.yaml包含主图表和子图表的所有值的:
globalFoo: "bar"
subchart1:
foo: subchart1-{{ globalFoo }}
subchart2:
localFoo: "bar2"
foo: subchart2-{{ subchart2.localFoo }}
Run Code Online (Sandbox Code Playgroud)
我想实现两件事:
上面的例子不行。我尝试了几种语法,但没有一个有效。我在 HELM 文档中没有找到类似的内容。
可行吗?
mir*_*ixx 30
在子图值中引用先前声明的全局变量,在同一子图范围中引用先前声明的局部变量
这可以在某种程度上使用锚点和别名来实现。
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
Run Code Online (Sandbox Code Playgroud)
值可以自然地组合在 helm 模板中:
kind: ConfigMap
...
data:
FOO: "subchart2-{{ .Values.subchart2.foo }}"
Run Code Online (Sandbox Code Playgroud)
如果发现自己需要“模板化值”,该tpl函数可能会有所帮助:
# 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 }}"
Run Code Online (Sandbox Code Playgroud)
请注意,(dict ...)语法源自此 helm github 评论中的提示。这有助于通过提供“.d”上下文而不是“.Values”来缩短模板字符串,即.d.user缩写.Values.global.user
Laz*_*ass 22
目前(从 Helm 版本 3 开始)不支持此功能。
\n提案中讨论了类似的问题:允许在 value.yaml 中使用模板
\n并因多种原因被拒绝。Helm 的创建者说的其中之一
\n\n\n\n更大的限制是values.yaml 文件必须始终是有效的YAML 文件。
\n
\n\n作为模板数据源传递到模板引擎的文件本身并不通过模板引擎传递。我们几乎肯定不会这样做,因为这会让用户感到非常困惑。它还破坏了标准 YAML 兼容性以及与所有现有 Helm 版本的向后兼容性。
\n
最后但并非最不重要的一点是这里
\n\n\ntl;dr \n最简单的是,不想这样做的原因是您没有对提供模板值的文件进行模板化。此外,Helm 3 将废弃该功能
\n...
\n已被 Helm 3 废弃\n在 Helm 3 中,作为事件/钩子系统的一部分,我们将允许以比模板化更简单的方式对值进行基于 Lua 的修改。鉴于 Helm 3 的开发进展顺利,添加具有上述所有缺点的功能会导致比增加的价值更多的流失。因此,我们\xe2\x80\x99t 并没有完全拒绝这一点,而是正在为 Helm 3 实现它(尽管以不同的方式)
\n
但是提到的通过 Lua 的支持已经通过这个评论关闭了
\n\n\n我们应该关闭这个,因为 Lua 支持不会很快出现,而且我们还有其他(可以说更好的)想法来处理这个问题(比如 WASM)。这是在计划中的,但现在不再了。
\n
| 归档时间: |
|
| 查看次数: |
39490 次 |
| 最近记录: |