循环进入舵图模板

tho*_*oth 1 kubernetes kubernetes-helm

我试图像这样在kubernetes掌舵图中循环计数:

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 }}
Run Code Online (Sandbox Code Playgroud)

但是,go模板中没有可用的模板,因为它们会告诉您自己

我希望它输出如下内容:

 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 }}
Run Code Online (Sandbox Code Playgroud)

我的掌舵图中的线在这里:https : //github.com/joshuacox/reactionetes/blob/gymongonasium/reactioncommerce/templates/configmap.yaml#L11

tho*_*oth 7

请注意,在helm 提示和技巧页面上,他们提到添加了sprig功能,其中之一是直到,可以在此处 或在我的情况下看到它的实际效果:

{{- 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 -}}
Run Code Online (Sandbox Code Playgroud)


Ken*_*ant 6

使用范围:

{{ range .Values }}
   {{ .MongodbReleaseName }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

这将输出.Values中每个项目的.MongodbReleaseName(假设是一个字段)。该值分配给。在此范围内,因此您可以简单地引用各个值的字段/功能。这非常类似于其他模板语言中的for循环。您也可以通过分配索引和值来使用它。