具有构建时间环境变量的 Helm 值

Helm values with build time env vars

我有一个 Helm 图表,在部署中,我想为我的 pods 提供一些环境变量。在我的 CI/CD 设置中的构建期间,我将值作为环境变量,我现在像这样传递它们:

helm upgrade CHART_NAME helm --install --set-string webserver.env.DATABASE_URL=$DATABASE_URL

我有超过 20 个环境变量,我可以在 values.yml 中以某种方式访问​​它们吗?

webserver:
  env:
    DATABASE_URL=${DATABASE_URL}

遗憾的是这个不起作用。

更好的方法是创建一个 values-override.yaml 文件,并将需要从 Jenkins 设置的所有值存储在 values-override 文件中。 使用 sed 命令将 value-override.yaml 更新到 jenkins env-variable。在 Helm 升级命令中使用覆盖 values.yaml。

Helm 不会解析 values 文件中的占位符(环境变量),但您可以在 CI/CD 脚本中自行完成,然后再将文件传递给 helm upgrade 命令:

values-env.yaml:

webserver:
  env:
    DATABASE_URL=${DATABASE_URL}

CI/CD 脚本:

eval "echo \"$(cat values-env.yaml)\"" >> values-ci.yaml
helm upgrade CHART_NAME helm --install --values values-ci.yaml