指定列表中的图表中的关键

问题描述 投票:1回答:2

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"

感觉就像我失去了一些东西明显。 棉短绒说:OK 模板说:

ENV:[图[名称:DELFI_DB_USER值:YYY]图[名称:DELFI_DB_PASSWORD值:XXX]图[名称:DELFI_DB_CLASS值:com.mysql.jdbc.Driver]映射[值:JDBC:MySQL的:// dockersqlserver {{ .Release.Namespace}} svc.cluster.local:?3306 / ddbeta \ \&安培\; useSSL =真\&安培\; requireSSL =假名:DELFI_DB_URL]]

升级说:

错误:升级失败:误差变换YAML到JSON::YAML:线35:上XXX /模板/ deployment.yaml YAML解析错误发现意外 ':'

解:

env:
{{- range .Values.env }}
- name: {{ .name | quote }}
  value: {{ .value | quote }}
{{- end }}
templates kubernetes kubernetes-helm
2个回答
2
投票

目前围棋模板扩张会给输出这不是YAML:

env: {{ .Values.env}}

变为:

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

掌舵转到模板需要遍历源YAML字典的键。这在Helm docs说明。

正确Deployment.yaml是:

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

1
投票

头盔包括undocumented toYaml and toJson template functions;无论是将在这里工作(因为有效的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"
© www.soinside.com 2019 - 2024. All rights reserved.