有没有一种方法可以将名称空间包含在值中?

时间:2019-07-03 09:40:08

标签: go kubernetes kubernetes-helm helmfile

我有几个对应于我不同环境的名称空间(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

是否有关于执行此操作或任何变通方法的见解?

1 个答案:

答案 0 :(得分:1)

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

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

从文档(go-template文档)中:

  

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

因此,在这种情况下,您可以使用键.Values.db来索引.Release.Namespace