我们有这样的保护伞结构:
-app1
templates/...
values.yaml
-app2
templates/...
values.yaml
values/dev.yaml
我希望能够根据子图表的不同环境(dev,prod)使用不同的值文件来部署整个伞
有可能吗?
不可能,但是有一种变通办法可以实现此功能,需要更改目录结构。在阅读任何其他内容之前,请先在此处查看类似的问题How to set environment related values.yaml in Helm subcharts?
以上情况可以通过以下目录结构实现:
test-umbrella - Chart.yaml
- values.yaml
- requirements.yaml
- charts - test-dev - Chart.yaml
- values.yaml
- test-prod - Chart.yaml
- values.yaml
- templates - deployment.yaml
- _helpers.tpl
- secret.yaml
图表依存关系应这样定义:requirements.yaml
dependencies:
- name: tesy-dev
repository: "file://charts/test-dev"
version: ">= 0.0.1"
tags:
- dev-values
import-values:
- data
- name: test-prod
repository: "file://charts/test-prd"
version: ">= 0.0.1"
tags:
- prd-values
import-values:
- data
父图的values.yaml文件应包含如下值:
values.yaml
# Default values
tags:
dev-values: false
prd-values: false
然后最后,您应该使用以下标志进行安装:-set tags.dev-values = true
在伞形图中,您必须具有父values.yaml文件。如果在此处定义键,则子图的值将被其覆盖。
因此,您可以在子图表外部使用values-dev.yaml来覆盖内部子图表的值。
此外,由于环境原因,父图表values.yaml中应具有可以根据环境进行相应更改的所有值,以便可以轻松地覆盖它们。
请检查最佳做法和执行流程https://helm.sh/docs/chart_template_guide/subcharts_and_globals/