【问题标题】:Is there a way to include the namespace inside a value?有没有办法将命名空间包含在一个值中?
【发布时间】:2019-11-13 23:18:53
【问题描述】:

我有几个命名空间(iso、dev、sandbox 等),它们对应于我的不同环境。对于每个环境和命名空间,都有一个关联的数据库。 当我使用 Helm 部署我的 pod 时,我想将命名空间注入到一个值中以获取适当的密码。

在我的值文件中,我有一些看起来像这样的东西:

db:
  iso: passwordISO
  dev: passwordDEV
  sandbox: passwordSANDBOX
  spec: passwordSPEC
  val: passwordVAL

在我的 consumer_config 文件中我有这个:

  db_host: DB_HOST-{{ .Release.Namespace }}
  db_port: DB_PORT
  db_name: DB_NAME
  db_user: DB_PORT
  db_password: {{ .Values.db.iso }}

我已经尝试使用{{- include }} 模式但没有成功。我也试过{{ .Values.db.{{ .Release.Namespace }}}}给我以下错误unexpected <.> in operand

关于如何执行此操作或任何解决方法的任何见解?

【问题讨论】:

  • 不建议将 BD 密码存储在 helm values.yaml 文件中。而是在各自的命名空间中创建一个包含数据库密码的秘密对象,并将它们附加到 pod。

标签: go kubernetes kubernetes-helm helmfile


【解决方案1】:

由于 Helm 基于 Go-template 语言,go-template 语言中可用的功能可能会有所帮助:

{{ index .Values.db .Release.Namespace }}

来自文档(go-template 文档):

索引 返回索引其第一个参数的结果 以下论点。因此,在 Go 语法中,“index x 1 2 3”是 x[1][2][3]。每个索引项必须是映射、切片或数组。

所以在这种情况下,您使用键 .Release.Namespace 索引 .Values.db

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多