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 }}
我目前正在尝试通过 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 }}