Helm3 使用查找函数加载变量

问题描述 投票:0回答:1

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

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

当然,这会返回“坏性格[。”如果我删除它,它会返回“评估接口 {}.loadBalancer 的 nil 指针”。

我正在尝试做的事情可能吗?

谢谢

kubernetes kubernetes-helm
1个回答
3
投票

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

index
函数

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

经过进一步思考,我可以很容易想象在

nil
运行期间发生
helm template
指针错误,因为
lookup
在离线运行时返回
map[]

在这种情况下,您需要使用

index
函数进行 every 路径导航:

{{ $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 }}
© www.soinside.com 2019 - 2024. All rights reserved.