2

我有几个名称空间(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

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

4

1 回答 1

1

由于 Helm 基于 Go-template 语言,因此 go-template 语言中可用的功能可以提供帮助:

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

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

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

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

于 2019-07-03T11:54:41.390 回答