具有构建时间环境变量的 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
我有一个 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