I'm having trouble rendering a template for a Helm Chart that needs to have easily expandable amounts of nodes and replicas. I get the below error message. What's odd is I do not get the below error message if I remove the inner loop to not nest loops. I'm completely new to go, but this seems valid. I'm at a loss.
Error:
$ helm install . --dry-run --debug
Error: render error in "app-on-k8s/templates/configmap_configd.yaml": template: app-on-k8s/templates/configmap_configd.yaml:18:77: executing "app-on-k8s/templates/configmap_configd.yaml" at <.Values.nodeCount>: can't evaluate field Values in type intThis is the relevant section from my values.yaml file:
# number of nodes / shards
nodeCount: 5
replicaCount: 3And the relevant section from my template file:
<default>
{{range $i, $e := until (atoi (printf "%d" (int64 .Values.nodeCount))) }}
<node>
{{range $j, $k := until (atoi (printf "%d" (int64 .Values.replicaCount))) }} #line 18
<replica>
<host>{{ $.Release.Name }}-{{$j}}</host>
<port>{{ $.Values.service.rpc_port }}</port>
</replica>
{{end}}
</node>
{{end}}
</default>The problem is, when you are using .Values.replicaCount in the second loop,. scope has been changed and now pointing at .Values.nodeCount. So .Values.replicaCount now pointing to .Values.nodeCount.Values.replicaCount. Since, there is no such field in values.yaml file you are getting this error.
Use $.Values.replicaCount instead of .Values.replicaCount in second loop.
Ref: helm.sh