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值:yyy]地图[名称:DELFI_DB_PASSWORD 值:xxx] map [名称:DELFI_DB_CLASS值:com.mysql.jdbc.Driver] map [value:jdbc:mysql:// dockersqlserver。{{.Release.Namespace }}。svc.cluster.local:3306 / ddbeta \?\&amp ;; useSSL = true \& requireSSL = false 名称:DELFI_DB_URL]]
升级说:
错误:升级失败:YAML解析错误 xxx / templates / deployment.yaml:将YAML转换为JSON时发生错误:yaml: 第35行:发现意外的“:”
解决方案:
env:
{{- range .Values.env }}
- name: {{ .name | quote }}
value: {{ .value | quote }}
{{- end }}
答案 0 :(得分:2)
当前的Go模板扩展将提供不是YAML的输出:
env: {{ .Values.env}}
成为:
env: env: [Some Go type stuff that isn't YAML]...
Helm Go模板需要遍历源YAML词典的键。 Helm docs中对此进行了描述。
正确的Deployment.yaml是:
...
env:
{{- range .Values.env }}
- name: {{ .name | quote }}
value: {{ .value | quote }}
{{- end }}
...
答案 1 :(得分:1)
头盔包括undocumented toYaml
and toJson
template functions;两者都可以在这里使用(因为有效的JSON是有效的YAML)。较短的路径可能是
env: {{- .Values.env | toYaml | nindent 2 }}
请注意,缩进需要特别小心,特别是如果要设置不在该列表中的任何其他环境变量。在此示例中,我要求Helm将YAML列表缩进两步,因此也需要遵循其他环境值
env: {{- .Values.env | toYaml | nindent 2 }}
- name: OTHER_SERVICE_URL
value: "http://other-service.default.svc.cluster.local"