I am trying to loop for a count in a kubernetes helm chart like this:
reaction.mongo_url_big: mongodb://{{ for $mongocount := 0; $mongocount < {{ .Values.mongodbReplicantCount }}; $mongocount++ }}{{ .Values.mongodbReleaseName }}-mongodb-replicaset-{{ $mongocount }}:{{ .Values.mongodbPort }}{{ if $mongocount < {{ .Values.mongodbReplicantCount }} - 1 }},{{ end }}{{ end }}/{{ .Values.mongodbName }}?replicaSet={{ .Values.mongodbReplicaSet }}
However, go templates seem to be lacking a means of rendering a 'for' loop, by design
I want it to output something like:
reaction.mongo_url: mongodb://{{ .Values.mongodbReleaseName }}-mongodb-replicaset-0:{{ .Values.mongodbPort }},{{ .Values.mongodbReleaseName }}-mongodb-replicaset-1:{{ .Values.mongodbPort }},{{ .Values.mongodbReleaseName }}-mongodb-replicaset-2:{{ .Values.mongodbPort }}/{{ .Values.mongodbName }}?replicaSet={{ .Values.mongodbReplicaSet }}
The line in my helm chart is here: https://github.com/joshuacox/reactionetes/blob/gymongonasium/reactioncommerce/templates/configmap.yaml#L11
Use range:
{{ range .Values }}
{{ .MongodbReleaseName }}
{{ end }}
This will output the .MongodbReleaseName (assuming that's a field) of every item in .Values. The value is assigned to . while within the range so you can simply refer to fields/functions of the individual Values. This is very like a for loop in other templating languages. You can also use it by assigning an index and value.
Notice on the helm tips and tricks page they mention that sprig functions have been added, one of which is until, which can be seen in action here or in my case:
{{- define "mongodb_replicaset_url" -}}
{{- printf "mongodb://" -}}
{{- range $mongocount, $e := until (.Values.mongodbReplicaCount|int) -}}
{{- printf "%s-mongodb-replicaset-%d." $.Values.mongodbReleaseName $mongocount -}}
{{- printf "%s-mongodb-replicaset:%d" $.Values.mongodbReleaseName ($.Values.mongodbPort|int) -}}
{{- if lt $mongocount ( sub ($.Values.mongodbReplicaCount|int) 1 ) -}}
{{- printf "," -}}
{{- end -}}
{{- end -}}
{{- printf "/%s?replicaSet=%s" $.Values.mongodbName $.Values.mongodbReplicaSet -}}
{{- end -}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With