1

我正在尝试通过另一个变量动态访问掌舵值,因为我正在利用范围功能来创建多个部署。以我的部署文件的这一部分为例

{{- range $teams := .Values.teams }}
.
.
.
        ports:
        - containerPort: {{ .Values.deployment.backend.($teams.tag).serverPort }}
          protocol: {{ .Values.deployment.backend.($teams.tag).serverProtocol }}
        - containerPort: {{ .Values.deployment.backend.($teams.tag).authPort }}
          protocol: {{ .Values.deployment.backend.($teams.tag).authProtocol }}

.
.
.
---
{{- end }}

带有 values.yml 文件

teams:
  - name: TeamA
    tag: teamA
  - name: TeamB
    tag: teamB
  - name: TeamC
    tag: teamC
deployment:
  backend:
    teamA:
      serverPort: 10001
      serverProtocol: TCP
      authPort: 10010
      authProtocol: TCP
    teamB:
      serverPort: 9101
      serverProtocol: TCP
      authPort: 9110
      authProtocol: TCP
    teamC:
      serverPort: 9001
      serverProtocol: TCP
      authPort: 9010
      authProtocol: TCP


例如,我无法弄清楚如何传递要评估的 $teams.tag 以返回 containerPort 的整体价值。

任何帮助表示赞赏。

干杯

4

2 回答 2

1

Helm 本身提供了许多函数来操作值。

这是使用函数处理用例的一种方法get

{{- $ := . -}}
{{- range $teams := .Values.teams }}
.
.
.
        ports:
        - containerPort: {{ (get $.Values.deployment.backend $teams.tag).serverPort }}
          protocol: {{ (get $.Values.deployment.backend $teams.tag).serverProtocol }}
        - containerPort: {{ (get $.Values.deployment.backend $teams.tag).authPort }}
          protocol: {{ (get $.Values.deployment.backend $teams.tag).authProtocol }}

.
.
.
---
{{- end }}

请注意,range运算符内部的范围会发生变化。因此,您需要预先分配.to$才能访问根范围。

您还可以参考此文档https://helm.sh/docs/chart_template_guide/function_list/以了解有关您可以使用的功能的更多信息。

于 2021-10-05T03:06:07.477 回答
0

最终使用 tpl https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function

如果有更好的方法,欢迎提出建议

于 2021-10-05T02:46:52.750 回答