I am currently attempting to use the lookup function via Helm 3.1 to load a variable during installation.
{{ $ingress := (lookup "v1" "Ingress" "mynamespace" "ingressname").status.loadBalancer.ingress[0].hostname }}
Of course, this returns, "bad character [." If I remove it, it returns "nil pointer evaluating interface {}.loadBalancer".
Is what I am attempting to do even possible?
Thanks
You are attempting to use "normal" array indexing syntax, but helm charts use "golang templates" and thus array indexing is done via the index
function
{{ $ingress := (index (lookup "v1" "Ingress" "mynamespace" "ingressname").status.loadBalancer.ingress 0).hostname }}
after further thought, I can easily imagine that nil
pointer error happening during helm template
runs, since lookup
returns map[]
when running offline
In that case, you'd want to use the index
function for every path navigation:
{{ $ingress := (index (index (index (index (index (lookup "v1" "Ingress" "mynamespace" "ingressname") "status") "loadBalancer") "ingress") 0) "hostname") }}
or, assert the lookup is in "offline" mode and work around it:
{{ $ingress := "fake.example.com" }}
{{ $maybeLookup := (lookup "v1" "Ingress" "mynamespace" "ingressname") }}
{{ if $maybeLookup }}
{{ $ingress = (index $maybeLookup.status.loadBalancer.ingress 0).hostname }}
{{ end }}