在我们的一个舵图中,我们每个环境都有一个值文件,例如
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 文件作为安装命令的一部分?
如果可能,尝试将值和模板全部打包并版本化到一个地方。
谢谢
这个问题有两个答案。
第一个,使用当前的包和存储库设置,您需要下载并解压包,然后从图表文件夹中调用值文件
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
是的。
helm install -f dev-values.yaml ./mychart