1、Subchart
- 目录结构
../../mychart/
├── charts
│ └── subchart #子chart
│ ├── Chart.yaml
│ ├── templates
│ │ └── configmap.yaml
│ └── values.yaml
├── Chart.yaml
├── config1.toml
├── config2.toml
├── config3.toml
├── templates
│ ├── cmdemo.yaml
│ ├── configmap.yaml
│ └── secretdemo.yaml
└── values.yaml
- 在mychart的下创建subchart
# mychart/charts/subchart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-cfgmap2
data:
drink: {
{
.Values.favorite.drink }}、
# mychart/charts/subchart/values.yaml
favorite:
drink: "orange juice" #正常应该输出drink: orange juice
# mychart/values.yaml
favorite:
myvalue: "Hello World"
drink: "coffee"
food: "PIZZA"
subchart: #指定子chart值
favorite:
drink: "coffee"
渲染效果
# Source: mychart/charts/subchart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: release-name-cfgmap2
data:
drink: coffee
可以看到被mychart中的value文件指定后,子chart中的同一字段被重写为drink: coffee
此时及时指定value文件也没用,父chart依旧改写子chart
#指定value取值来自子chart,渲染结果表明,父chart依旧改写子chart
[root@ks-allinone daicong]# helm template mychart -f mychart/charts/subchart/values.yaml
---
# Source: mychart/charts/subchart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: release-name-cfgmap2
data:
drink: coffee
可以看到父类改写子类
2、指定目录下的value文件
测试:为父chart指定values.yaml文件,看看是否按照父chart文件夹下的取值还是按照指定的文件取值
- 1、不指定values.yaml文件
[root@ks-allinone daicong]# helm template mychart
---
# Source: mychart/templates/cmdemo.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: release-name-configmap
data:
myvalue: "Hello World"
drink: "coffee" #按照默认的mychart文件夹中values.yaml文件取值
food: "PIZZA"
- 2、指定values.yaml文件
[root@ks-allinone daicong]# helm template mychart -f mychart/charts/subchart/values.yaml
---
# Source: mychart/templates/cmdemo.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: release-name-configmap
data:
myvalue: "Hello World"
drink: "orange juice" #按照指定的values.yaml文件取值
food: "PIZZA"
可以看到当指定values.yaml文件时,优先从values.yaml文件中取值
3、总结
1、子图表被认为是“独立的”,这意味着子图表永远不能显式依赖其父图表。
2、子图无法访问其父级的值。
3、父图表可以覆盖子图表的值。
4、Helm具有可被所有图表访问的全局值的概念。
5、当指定values.yaml文件时,优先从values.yaml文件中取值