Helm -是否有可能将值添加到列表中,然后循环它们?



我想创建一个模板文件,可以与列表作为常规值进行交互。基本上,在它们上面循环。换句话说,假设有以下两个文件:

values1.yaml
jobs:
single: true
foo: bar
kek: bor

values2.yaml
jobs:
- foo: bar
kek: bor
- foo: rab
kek: rob

如何创建一个在两个值文件上工作的模板?我个人认为可以通过以下方式在列表中注入第一个文件:

{{ if Values.jobs.single }}
{{ $myList := list .Values.jobs }}
{{ else }}
{{ $myList := .Values.jobs }}
{{- end }}
{{- range $myList }}
...

不幸的是,这似乎不起作用,因为赋值是局部的(因此只能在if-else块中可用)。

Helm有两个函数可以检查对象的类型。这些通常使用Go术语,所以你通常称之为"列表"。在大多数语言中都是"切片"。在走。

为了简化变量作用域的一些问题,我还只定义变量一次,并使用ternary函数将条件内联移动。

{{- $j := .Values.jobs }}
{{- $myList := kindIs "slice" $j | ternary $j (list $j) }}
{{- range $myList }}...{{ end }}

在对内联条件有更自然支持的语言中,这相当于

j = values[:jobs]
my_list = if j.is_a?(Array)
then j
else [j]
end
my_list.each {|dict| ...}

相关内容

最新更新