目录
1、Subchart2、指定目录下的value文件3、总结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.yamlapiVersion: v1kind: ConfigMapmetadata:name: {{.Release.Name }}-cfgmap2data:drink: {{.Values.favorite.drink }}、# mychart/charts/subchart/values.yamlfavorite:drink: "orange juice" #正常应该输出drink: orange juice# mychart/values.yamlfavorite:myvalue: "Hello World"drink: "coffee"food: "PIZZA"subchart: #指定子chart值favorite:drink: "coffee"
渲染效果
# Source: mychart/charts/subchart/templates/configmap.yamlapiVersion: v1kind: ConfigMapmetadata:name: release-name-cfgmap2data: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.yamlapiVersion: v1kind: ConfigMapmetadata:name: release-name-cfgmap2data:drink: coffee
可以看到父类改写子类
2、指定目录下的value文件
测试:为父chart指定values.yaml文件,看看是否按照父chart文件夹下的取值还是按照指定的文件取值
1、不指定values.yaml文件
[root@ks-allinone daicong]# helm template mychart ---# Source: mychart/templates/cmdemo.yamlapiVersion: v1kind: ConfigMapmetadata:name: release-name-configmapdata: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.yamlapiVersion: v1kind: ConfigMapmetadata:name: release-name-configmapdata:myvalue: "Hello World"drink: "orange juice" #按照指定的values.yaml文件取值food: "PIZZA"
可以看到当指定values.yaml文件时,优先从values.yaml文件中取值
3、总结
helm官网直通车
1、子图表被认为是“独立的”,这意味着子图表永远不能显式依赖其父图表。
2、子图无法访问其父级的值。
3、父图表可以覆盖子图表的值。
4、Helm具有可被所有图表访问的全局值的概念。
5、当指定values.yaml文件时,优先从values.yaml文件中取值