我正在尝试循环kubernetes helm图表中的计数,如下所示:
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 }}
但是,go模板中没有可用的内容,因为它们会告诉您http://jcenter.bintray.com/com/github/kostasdrakonakis/spinner-preference/1.0.0/:spinner-preference-1.0.0.pom
我希望它能输出如下内容:
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 }}
我的头盔图中的行在这里: themselves
答案 0 :(得分:3)
使用范围:
{{ range .Values }}
{{ .MongodbReleaseName }}
{{ end }}
这将输出.Values中每个项目的.MongodbReleaseName(假设是一个字段)。该值已分配给。在范围内,您可以简单地引用各个值的字段/函数。这非常像其他模板语言中的for循环。您也可以通过分配索引和值来使用它。
答案 1 :(得分:2)
关于helm tips and tricks page的提醒,他们提到添加了sprig个功能,其中一个是直到,可以在行动here或我的案例中看到:
{{- 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 -}}