如何使用 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 之类的方法,但它不起作用

由于您显示的值结构只是简单的以字符串为键的字典和列表,因此您不需要像 pickget 这样的函数;您可以只使用 . 运算符从包含的字典中检索特定键。

{{ $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" }}