петля в шаблоне диаграммы руля

Я пытаюсь зациклить счет на диаграмме руля 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, похоже, отсутствуют средства для рендеринга цикла for, по дизайну

Я хочу, чтобы он выводил что-то вроде:

 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


person thoth    schedule 11.12.2017    source источник
comment
Ваш вопрос о том, почему разработчики пакета не реализовали то, что вы хотите, будет лучше, если вы спросите людей, которые принимали эти решения. На вашем месте я бы попробовал список рассылки go #go-nuts.   -  person mkopriva    schedule 12.12.2017
comment
Связанный/возможный дубликат кода Golang для повторения html-код n раз.   -  person icza    schedule 12.12.2017
comment
@icza не знает, как применить ваши вещи в шаблоне руля, поэтому я не думаю, что это дубликат. Однако я думаю, что нашел свое решение здесь --› github.com/kubernetes/charts/blob/master/stable/aerospike/   -  person thoth    schedule 12.12.2017
comment
Это правильный вопрос, на самом деле он вовсе не основан на мнении, и не требуется большого воображения, чтобы отредактировать единственное предложение, которое модеры сочли неприемлемым, в фактическое утверждение ... сделано и проголосовали за повторное открытие.   -  person Ed Randall    schedule 04.06.2020


Ответы (2)


Использовать диапазон:

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

Это выведет .MongodbReleaseName (при условии, что это поле) каждого элемента в .Values. Значение присвоено . находясь в пределах диапазона, чтобы вы могли просто ссылаться на поля/функции отдельных значений. Это очень похоже на цикл for в других языках шаблонов. Вы также можете использовать его, назначив индекс и значение.

person Kenny Grant    schedule 12.12.2017

Обратите внимание на страницу советов и рекомендаций, где упоминается, что sprig, одна из которых - until, которую можно увидеть в действии здесь или в моем случае:

{{- 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 -}}
person thoth    schedule 12.12.2017