如何在Helm图表中生成Consul模板



我有一个Spring Boot应用程序的Helm Chart,它通过Hashicorp Vault代理注入器注入数据库凭据。

这是开发环境中生成的部署清单中的一个片段。

annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "app"
vault.hashicorp.com/agent-inject-secret-database.properties: "secret/data/app/dev/database"
vault.hashicorp.com/agent-inject-template-database.properties: |
{{ with secret "secret/data/app/dev/database" }}
spring.datasource.username: {{ .Data.data.username }}
spring.datasource.password: {{ .Data.data.password }}
{{ end }}

为了能够在values.yaml中指定机密的路径和生成的机密文件的名称,我构建了这个模板:

annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "{{ .Values.vault.role }}"
{{ print "vault.hashicorp.com/agent-inject-secret-" .Values.vault.secretFileName }}: "{{ .Values.vault.secretPath }}"
{{ print "vault.hashicorp.com/agent-inject-template-" .Values.vault.secretFileName }}: |
{{`
{{ with secret "`}} {{- .Values.vault.secretPath -}}  {{`" }}
spring.datasource.username: {{ .Data.data.username }}
spring.datasource.password: {{ .Data.data.password }}
{{ end }}
`}}

它按预期工作,但我不认为它很优雅。

我也尝试过这种方法:

annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "{{ .Values.vault.role }}"
{{ print "vault.hashicorp.com/agent-inject-secret-" .Values.vault.secretFileName }}: "{{ .Values.vault.secretPath }}"
{{ print "vault.hashicorp.com/agent-inject-template-" .Values.vault.secretFileName }}: |
{{ print "{{ with secret " .Values.vault.secretPath " }}" }}
{{ print "spring.datasource.username: {{ .Data.data.username }}" }}
{{ print "spring.datasource.password: {{ .Data.data.password }}" }}
{{ print "{{ end }}" }}

我觉得稍微好一点,但我还是不满意。

所以我的问题是:有更好的方法吗

我在掌舵图中使用这种方式

annotations:
vault.hashicorp.com/agent-inject: true
vault.hashicorp.com/role: {{ $.Values.injector.role }}
vault.hashicorp.com/agent-inject-secret-app: kv/k8s-{{ $.Values.environment }}/{{ $.Values.APP_NAME }}
vault.hashicorp.com/agent-inject-template-app: |
{{`{{ with secret "`}} kv/k8s-{{- $.Values.environment -}}/{{ $.Values.APP_NAME }}  {{`" }}
{{ range $key, $value := .Data }}
export {{ $key }}={{ $value }}
{{ end }}`}}

相关内容

  • 没有找到相关文章

最新更新