如何将环境变量从 helmfile values.yaml 传递到图表的 values.yaml?

时间:2021-03-11 12:45:54

标签: kubernetes-helm helmfile

我有一个包含多个图表的 helmfile 版本。每个图表中都有 values.yaml。 Рow 使那些 values.yaml 中的值根据环境而变化?我知道如何参数化 helmfile 的 values.yaml,但我找不到任何方法将这些值进一步放入图表 values.yaml。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

刚刚意识到 helmfiles values.yaml 它只是 helm --values 的来源。不应执行任何特殊操作。

答案 1 :(得分:0)

如果您将一个值文件命名为 anything.yaml.gotmpl,那么 Helmfile 将在将其模板应用于该文件之前,将其用作安装相关图表的值。

所以如果您的 helmfile.yaml

environments:
  prod:
    values:
      - domain: prod.example.com
releases:
  - name: a-service
    namespace: a-service
    chart: ./a-service/charts/a-service
    values:
      - ./a-service/charts/a-service/values.yaml.gotmpl # <-- *.gotmpl filename

那么 values.yaml.gotmpl 可以有

service:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: >-
      a-service.{{ .Values.domain }}
{{/* Expression    ^^^^^^^^^^^^^^   uses per-environment values */}}

你可以安装这个

helmfile -e prod apply