【问题标题】:How to merge helm chart and vault agent tempate?如何合并 helm chart 和 Vault Agent 模板?
【发布时间】:2021-05-05 06:19:13
【问题描述】:

我有两个舵图模板。

{{- 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' 这样的错误。我该如何解决这个问题?

【问题讨论】:

    标签: kubernetes-helm hashicorp-vault


    【解决方案1】:

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

    【讨论】:

    • 感谢您给我建议!然而,db.endpoint 值在模板化之后似乎是{{ with secret "common/data/mydata" -}}{{ .Data.data.db\n }}{{- end }}。如何删除字符串内的新行?
    【解决方案2】:

    感谢@DavidMaze 我解决了这个问题。不过,这有点棘手。我形成了我的 yaml 文档,如下所示。

    endpoint: |-
      {{`{{ with secret "`}}{{ default "common/data/mydata" $.Values.vaultSecretName }}{{`" -}}
        {{ .Data.data.db }}
      {{- end }}`}}
    

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2020-11-10
      • 1970-01-01
      • 2021-03-28
      • 2018-09-09
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多