如何合并 helm chart 和 vault agent 模板?
How to merge helm chart and vault agent tempate?
我有两个 helm 图表模板。
{{- define "helpers.config.tpl" -}}
debug: "true"
db:
app:
dialect: "mysql"
endpoint: {{`{{ with secret "` }}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}{{ .Data.data.db }}{{- end }}`}}
{{- end -}}
{{- define "helpers.config" -}}
{{- $default := fromYaml ( include "helpers.config.tpl" . ) -}}
{{- $conf := .Values.configFile -}}
{{- toYaml (merge $conf $default ) }}
{{- end -}}
我也有 values.yaml
如下所示。
configFile:
db:
app:
conn: 300
我想添加或修改属性,只是通过 values.yaml
文件传递值。但是我得到了 Error: 'error converting YAML to JSON: yaml: line 86: did not find expected key'
这样的错误。我该如何解决这个问题?
Vault Agent Template 语法包括一个额外的模板层,由 helpers.config.tpl
生成。如果您使用空 .Values
调用该模板,您将退出
debug: "true"
db:
app:
dialect: "mysql"
endpoint: {{ with secret "common/data/mydata" -}}{{ .Data.data.db }}{{- end }}
不过,这不是有效的 YAML:YAML { ... }
应该是字典语法,而不是 Go 模板语法。您必须强制将此字符串解释为字符串。
可能最可靠的方法是使用 YAML block scalar syntax,缩进您要发出的内容但不应用其他转义:
endpoint: |-
{{`{{ with secret "` }}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}{{ .Data.data.db }}{{- end }}`}}
感谢@DavidMaze
我解决了这个问题。不过,这有点棘手。我像下面这样形成了我的 yaml 文档。
endpoint: |-
{{`{{ with secret "`}}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}
{{ .Data.data.db }}
{{- end }}`}}
我有两个 helm 图表模板。
{{- define "helpers.config.tpl" -}}
debug: "true"
db:
app:
dialect: "mysql"
endpoint: {{`{{ with secret "` }}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}{{ .Data.data.db }}{{- end }}`}}
{{- end -}}
{{- define "helpers.config" -}}
{{- $default := fromYaml ( include "helpers.config.tpl" . ) -}}
{{- $conf := .Values.configFile -}}
{{- toYaml (merge $conf $default ) }}
{{- end -}}
我也有 values.yaml
如下所示。
configFile:
db:
app:
conn: 300
我想添加或修改属性,只是通过 values.yaml
文件传递值。但是我得到了 Error: 'error converting YAML to JSON: yaml: line 86: did not find expected key'
这样的错误。我该如何解决这个问题?
Vault Agent Template 语法包括一个额外的模板层,由 helpers.config.tpl
生成。如果您使用空 .Values
调用该模板,您将退出
debug: "true"
db:
app:
dialect: "mysql"
endpoint: {{ with secret "common/data/mydata" -}}{{ .Data.data.db }}{{- end }}
不过,这不是有效的 YAML:YAML { ... }
应该是字典语法,而不是 Go 模板语法。您必须强制将此字符串解释为字符串。
可能最可靠的方法是使用 YAML block scalar syntax,缩进您要发出的内容但不应用其他转义:
endpoint: |-
{{`{{ with secret "` }}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}{{ .Data.data.db }}{{- end }}`}}
感谢@DavidMaze 我解决了这个问题。不过,这有点棘手。我像下面这样形成了我的 yaml 文档。
endpoint: |-
{{`{{ with secret "`}}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}
{{ .Data.data.db }}
{{- end }}`}}