有没有办法指定在舵图中使用哪个值文件
Is there a way to specify which values file to use in a helm chart
在我们的一个 helm 图表中,每个环境都有一个值文件,例如
app-helm-chart:
dev-values.yaml
test-values.yaml
Chart.yaml
templates
deployment.yaml
service.yaml
ingress.yaml
Readme.md
我们已经使用 helm package 打包了 helm chart,然后尝试从我们的 helm 存储库安装它。
有没有办法指定在安装命令中使用包内的 dev-values 文件?
如果可能,尝试将所有值和模板打包并版本化在一个地方。
谢谢
是的。
helm install -f dev-values.yaml ./mychart
这个问题有两个答案。
第一个,使用当前的包和存储库设置,您需要下载并解压缩包,然后从图表文件夹中调用值文件
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 已经暗示过,就是不要在图表中包含 environment-specific 值——因为如果这样做,每次更改值或添加新值时,您需要重新打包图表并更新图表存储库。
更好的方法,我们这样做的方法是有一个单独的文件夹,像这样
.
├── 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 图表中,每个环境都有一个值文件,例如
app-helm-chart:
dev-values.yaml
test-values.yaml
Chart.yaml
templates
deployment.yaml
service.yaml
ingress.yaml
Readme.md
我们已经使用 helm package 打包了 helm chart,然后尝试从我们的 helm 存储库安装它。
有没有办法指定在安装命令中使用包内的 dev-values 文件?
如果可能,尝试将所有值和模板打包并版本化在一个地方。
谢谢
是的。
helm install -f dev-values.yaml ./mychart
这个问题有两个答案。
第一个,使用当前的包和存储库设置,您需要下载并解压缩包,然后从图表文件夹中调用值文件
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 已经暗示过,就是不要在图表中包含 environment-specific 值——因为如果这样做,每次更改值或添加新值时,您需要重新打包图表并更新图表存储库。
更好的方法,我们这样做的方法是有一个单独的文件夹,像这样
.
├── 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