我正在尝试将一个模板嵌套到另一个模板中,即我有一个 k8s deployment.yaml,它应该由 helm 模板化。但是,它已经在注释字段中使用 Vault 模板,负责将秘密注入 pod。
没有 Helm 模板它看起来像这样:
vault.hashicorp.com/agent-inject-template-.env: |
{{- with secret (print "envs/data/test") -}}{{- range $k, $v := .Data.data -}}
{{ $k }}={{ $v }}
{{ end }}{{- end -}}
现在,我想为 Helm 制作一个模板,并将路径
envs/data/test
替换为来自 Helm 值的值。所以我试过这样使用它:
vault.hashicorp.com/agent-inject-template-.env: |
{{- with secret (print {{ .Values.path }}) -}}{{- range $k, $v := .Data.data -}}
{{ $k }}={{ $v }}
{{ end }}{{- end -}}
但是这不起作用意味着
{{ .Values.path }}
按原样输出,作为字符串。
我如何在另一个模板上进行模板并将 {{ .Values.path }}
解析为变量?
兄弟,这意味着你将模板放在模板上,helm 和 vault 使用相同的语义,它将取代你的 vault 模板。
所以。您需要其他方法,例如将保险库模板手动放入保险库的 configmap 中或使用来自 banzai 的 vswh 它将帮助您通过改变您的应用程序自动注入 pod,并且您需要在部署/模板部署文件中输入您的秘密作为 ENV。