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

问题描述 投票:0回答:2

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

app-helm-chart:
  dev-values.yaml
  test-values.yaml
  Chart.yaml
  templates
    deployment.yaml
    service.yaml
    ingress.yaml
  Readme.md

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

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

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

谢谢

kubernetes kubernetes-helm
2个回答
7
投票

这个问题有两个答案。

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

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

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

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

.
├── charts
│   └── my-chart
│       ├── Chart.lock
│       ├── charts
│       │   └── ingress-nginx-3.35.0.tgz
│       ├── Chart.yaml
│       ├── README.md
│       └── templates
│           ├── deployment.yaml
│           ├── _helpers.tpl
│           ├── ingress.yaml
│           ├── NOTES.txt
│           ├── serviceaccount.yaml
│           └── service.yaml
├── profiles
│   ├── values-preprod.yaml
│   └── values-prod.yaml

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

helm upgrade --install --atomic --wait ./charts/my-chart -f profiles/values-preprod.yaml

helm upgrade --install --atomic --wait test-repo/my-chart -f profiles/values-preprod.yaml

1
投票

是的。

helm install -f dev-values.yaml ./mychart

https://helm.sh/docs/chart_template_guide/values_files/

© www.soinside.com 2019 - 2024. All rights reserved.