Helm3 使用查找函数加载变量

Helm3 Using Lookup Function to Load a Variable

我目前正在尝试通过 Helm 3.1 使用查找功能在安装期间加载变量。

{{ $ingress := (lookup "v1" "Ingress" "mynamespace" "ingressname").status.loadBalancer.ingress[0].hostname }}

当然是这个returns,“坏字[。”如果我删除它,它 returns "nil pointer evaluating interface {}.loadBalancer".

我正在尝试做的事情是否可行?

谢谢

您正在尝试使用“正常”数组索引语法,但 helm 图表使用“golang 模板”,因此数组索引是通过 the index function

完成的
{{ $ingress := (index (lookup "v1" "Ingress" "mynamespace" "ingressname").status.loadBalancer.ingress 0).hostname }}

经过进一步思考,我很容易想象 nil 指针错误发生在 helm template 运行期间,因为 lookup returns map[] when running offline

在这种情况下,您需要对 每个 路径导航使用 index 函数:

{{ $ingress := (index (index (index (index (index (lookup "v1" "Ingress" "mynamespace" "ingressname") "status") "loadBalancer")  "ingress") 0) "hostname") }}

或者,断言查找处于“离线”模式并解决它:

      {{ $ingress := "fake.example.com" }}
      {{ $maybeLookup := (lookup "v1" "Ingress" "mynamespace" "ingressname") }}
      {{ if $maybeLookup }}
      {{   $ingress = (index $maybeLookup.status.loadBalancer.ingress 0).hostname }}
      {{ end }}