在掌舵图模板中循环

时间:2017-12-11 22:41:45

标签: kubernetes kubernetes-helm

我正在尝试循环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

2 个答案:

答案 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 -}}