如何使用 helm 模板获取数组中的值
How to fetch a value inside an array using helm template
我有以下结构:
label:
foo:
bar:
- x: hello
y: hallo
z: hola
为了达到z的值,我目前在做:
{{ $bar := pick .Values.label.foo "bar" }}
{{ $firstItem := first $bar }}
{{ $myValue := get $firstItem "z" }}
有更简洁的方法吗?我尝试了 pick .Values.label.foo[0].z
之类的方法,但它不起作用
由于您显示的值结构只是简单的以字符串为键的字典和列表,因此您不需要像 pick
或 get
这样的函数;您可以只使用 .
运算符从包含的字典中检索特定键。
{{ $bar := .Values.label.foo.bar }}
{{ $firstItem := first $bar }}
{{ $myValue := $firstItem.z }}
然后您可以用它们的表达式替换变量引用,如果需要,使用 (...)
括号分组。
{{ $myValue := (first .Values.label.foo.bar).z }}
你也可以在这里使用标准的index
函数;我相信混合数组和映射键是合法的。这会给你一个单一的调用,虽然混合了索引语法。
{{ $myValue := index .Values.label.foo.bar 0 "z" }}
{{ $myValue := index .Values "label" "foo" "bar" 0 "z" }}
我有以下结构:
label:
foo:
bar:
- x: hello
y: hallo
z: hola
为了达到z的值,我目前在做:
{{ $bar := pick .Values.label.foo "bar" }}
{{ $firstItem := first $bar }}
{{ $myValue := get $firstItem "z" }}
有更简洁的方法吗?我尝试了 pick .Values.label.foo[0].z
之类的方法,但它不起作用
由于您显示的值结构只是简单的以字符串为键的字典和列表,因此您不需要像 pick
或 get
这样的函数;您可以只使用 .
运算符从包含的字典中检索特定键。
{{ $bar := .Values.label.foo.bar }}
{{ $firstItem := first $bar }}
{{ $myValue := $firstItem.z }}
然后您可以用它们的表达式替换变量引用,如果需要,使用 (...)
括号分组。
{{ $myValue := (first .Values.label.foo.bar).z }}
你也可以在这里使用标准的index
函数;我相信混合数组和映射键是合法的。这会给你一个单一的调用,虽然混合了索引语法。
{{ $myValue := index .Values.label.foo.bar 0 "z" }}
{{ $myValue := index .Values "label" "foo" "bar" 0 "z" }}