如何在掌舵时将变量从父级传递给子级?

AVa*_*arf 0 kubernetes kubernetes-helm

我是 helm 的新手,我想知道如何将变量从父包传递给子包。我有一个多微服务应用程序,它由不同的 helm 包组成,如下所示:

$ tree parent/
parent/
??? charts/
?   ??? child-A-0.0.1.tgz
?   ??? child-B-0.0.1.tgz
?   ??? child-C-0.0.1.tgz
??? Chart.yaml
??? templates/
?   ??? NOTES.txt
?   ??? secret.yaml
??? values.yaml
Run Code Online (Sandbox Code Playgroud)

例如,我想public-IP在父级中进行设置,values.yaml并且当我安装public-IP通过并设置在子级中的父级时。

Dav*_*aze 5

Helm 文档中描述了覆盖子图表的值

在父图表的values.yaml文件(或您传递给的外部文件helm install -f)中,您可以显式覆盖子图表的值:

childA:
  publicIP: 10.10.10.10
Run Code Online (Sandbox Code Playgroud)

顶级值键global也总是传递给子图表,但图表需要知道来查找它。

global:
  publicIP: 10.10.10.10
Run Code Online (Sandbox Code Playgroud)
env:
  - name: PUBLIC_IP
    value: {{ .Values.global.publicIP }}
Run Code Online (Sandbox Code Playgroud)

此解决方案在 Helm 设置阶段发生得相当早,因此无法将计算值传递给子图表,或将父图表的顶级配置中的相同值传递到子图表中,而无需将内容重组到global.