【问题标题】:How to generate a Consul template inside a Helm Chart如何在 Helm Chart 中生成 Consul 模板
【发布时间】:2021-02-04 09:47:32
【问题描述】:

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

这是来自开发环境中生成的部署清单的 sn-p。

      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 }}" }}

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

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

【问题讨论】:

    标签: kubernetes-helm hashicorp-vault consul-template


    【解决方案1】:

    我在 helm Chart 中使用这种方式

      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 }}`}}
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2021-05-05
      • 1970-01-01
      • 2019-10-03
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多