有没有办法指定在 helm 图表中使用哪个值文件

gdi*_*x0n 1 kubernetes kubernetes-helm helm3

在我们的舵图中,每个环境都有一个值文件,例如

app-helm-chart:
  dev-values.yaml
  test-values.yaml
  Chart.yaml
  templates
    deployment.yaml
    service.yaml
    ingress.yaml
  Readme.md
Run Code Online (Sandbox Code Playgroud)

我们已经使用 helm 包打包了 helm 图表,然后尝试从我们的 helm 存储库安装它。

有没有办法指定使用包内的 dev-values 文件作为安装命令的一部分?

如果可能的话,尝试将值和模板全部打包和版本化到一个地方。

谢谢

Ble*_*Fox 6

这个问题有两个答案。

\n

第一个,使用当前的包和存储库设置,您需要下载并解压包,然后从图表文件夹中调用值文件

\n
helm repo add test-repo http://url/to/your repo\nhelm repo update\nhelm fetch test-repo/my-chart-name --untar [--version x.x.x]  #This creates a directory called "my-chart-name" in the local directory\nhelm upgrade --install --atomic --wait ./my-chart-name/ -f ./mychart-name/dev-values.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

第二种更好的方法(Ga\xc3\xabl J 已经暗示过)是不在图表中包含特定于环境的值 - 因为如果这样做,每次更改值或添加新值时,您都会您需要重新打包图表并更新图表存储库。

\n

更好的方法,我们的方法是有一个单独的文件夹,像这样

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 charts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my-chart\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Chart.lock\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 charts\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ingress-nginx-3.35.0.tgz\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Chart.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 deployment.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 _helpers.tpl\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ingress.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 NOTES.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serviceaccount.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 service.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 profiles\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 values-preprod.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 values-prod.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

通过这种方式,我可以自由更新配置文件 yaml,然后使用本地(或远程)图表 - 并且每当我更新值时图表内容或版本都不需要更改。

\n
helm upgrade --install --atomic --wait ./charts/my-chart -f profiles/values-preprod.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
helm upgrade --install --atomic --wait test-repo/my-chart -f profiles/values-preprod.yaml\n
Run Code Online (Sandbox Code Playgroud)\n