带 2 个变量的 Helm 范围

问题描述

我正在尝试使用 helm 范围的循环,但使用 2 个变量,我所拥有的..

values.yaml

master:
  slave1: 
    - slave1value1
    - slave1value2
  slave2: 
    - slave2value1
    - slave2value2

我的实际循环。

{{- range  .Values.master.slave1 }}
        name: http://slave1-{{ . }}
{{- end }}
{{- range  .Values.master.slave2 }}
        name: http://slave2-{{ . }}
{{- end }}

这实际上是在做我需要的,输出将是这样的...

.Values.master.slave1 上循环

name: http://slave1-slave1value1
name: http://slave1-slave1value2

.Values.master.slave2 上循环

name: http://slave2-slave1value1
name: http://slave2-slave1value2

这现在完全有效,问题是,我可以只使用一个循环块来达到相同的结果吗?我试过了。

{{ alias := .Values.master }}
{{- range  $alias }}
        name: http://{{ . }}-{{ $alias.name }}
{{- end }}

输出不是我所期望的,提前致谢。

解决方法

几乎...你需要一个嵌套循环来做到这一点。顶级数据结构是一个映射,其中键是工作人员名称,值是值列表。因此,您可以遍历顶级映射,然后针对每个项目遍历值列表。

{{- $key,$values := range .Values.master -}}
{{- $value := range $values -}}
name: http://{{ $key }}-{{ $value }}
{{ end -}}
{{- end -}}

请注意,我们已将 range 的值分配给 locals 以避免在 . 的确切含义方面存在一些歧义(在每个 range 循环中,它是迭代器,对于当前-最内层循环)。

,

嗨@DavidMaze,我改变了循环中“范围”的顺序。

这不起作用。

{{- $key,$values := range .Values.master -}}
{{- $value := range $values -}}
name: http://{{ $key }}-{{ $value }}
{{ end -}}
{{- end -}}

这项工作按预期进行:)

{{- range $key,$values := .Values.master -}}
{{- range $value := $values -}}
name: http://{{ $key }}-{{ $value }}
{{ end -}}
{{- end -}}