Присвоить список ключу в диаграмме - PullRequest
0 голосов
/ 08 февраля 2019

Deployment.yaml

...
env: {{ .Values.env}}
...

Values.yaml:

env:
- name: "DELFI_DB_USER"
  value: "yyy"
- name: "DELFI_DB_PASSWORD"
  value: "xxx"
- name: "DELFI_DB_CLASS"
  value: "com.mysql.jdbc.Driver"
- name: "DELFI_DB_URL"
  value: "jdbc:sqlserver://dockersqlserver:1433;databaseName=ddbeta;sendStringParametersAsUnicode=false"

похоже, что я упускаю что-то очевидное.
Линтер говорит: хорошо
шаблон говорит:

env: [map [имя: DELFI_DB_USER значение: гггг] map [имя: DELFI_DB_PASSWORD значение: xxx] map [имя: DELFI_DB_CLASS значение: com.mysql.jdbc.Driver] map [значение: jdbc: mysql: // dockersqlserver. {{.Release.Namespace}}. svc.cluster.local: 3306 / ddbeta \? \ & \; useSSL = true \ & \; requireSSL = ложное имя: DELFI_DB_URL]]

Обновление говорит:

Ошибка: СБОЙ ОБНОВЛЕНО: Ошибка синтаксического анализа YAML в xxx / templates / deploy.yaml: ошибка преобразования YAML в JSON: yaml: строка 35: обнаружен неожиданный ':'

решение:

env:
{{- range .Values.env }}
- name: {{ .name | quote }}
  value: {{ .value | quote }}
{{- end }}

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Шлем включает недокументированные toYaml и toJson шаблонные функции ;любой из них будет работать здесь (потому что действительный JSON является действительным YAML).Более короткий путь может быть

env: {{- .Values.env | toYaml | nindent 2 }}

Обратите внимание, что вам нужно быть немного осторожнее с отступом, особенно если вы устанавливаете какие-либо дополнительные переменные среды, которых нет в этом списке.В этом примере я попросил Хелма сделать отступ в списке YAML еще на два шага, поэтому дополнительные значения среды должны следовать этому правилу

env: {{- .Values.env | toYaml | nindent 2 }}
  - name: OTHER_SERVICE_URL
    value: "http://other-service.default.svc.cluster.local"
0 голосов
/ 08 февраля 2019

Текущее расширение шаблона Go даст вывод, который не является YAML:

env: {{ .Values.env}}

становится:

env: env: [Some Go type stuff that isn't YAML]...

Шаблон Helm Go должен циклически переключаться по ключам исходного YAMLтолковый словарь.Это описано в документах Helm .

Правильный Deployment.yaml:

...
env:
{{- range .Values.env }}
  - name: {{ .name | quote }}
    value: {{ .value | quote }}
{{- end }}
...
...