我目前正在尝试通过 Helm 3.1 使用查找功能在安装过程中加载变量。
{{ $ingress := (lookup "v1" "Ingress" "mynamespace" "ingressname").status.loadBalancer.ingress[0].hostname }}
当然,这会返回“坏性格[。”如果我删除它,它会返回“评估接口 {}.loadBalancer 的 nil 指针”。
我正在尝试做的事情可能吗?
谢谢
您正在尝试使用“普通”数组索引语法,但 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 }}