首页 文章

循环进入掌舵图模板[关闭]

提问于
浏览
1

我试图在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 }}

但是,go模板中没有可用的内容,因为它们会告诉你themselves

我希望它输出如下内容:

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

我的头盔图中的行在这里:https://github.com/joshuacox/reactionetes/blob/gymongonasium/reactioncommerce/templates/configmap.yaml#L11

2 回答

  • 3

    使用范围:

    {{ range .Values }}
       {{ .MongodbReleaseName }}
    {{ end }}
    

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

  • 1

    关于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 -}}
    

相关问题