helm的子chart

目录

    • 1、Subchart
    • 2、指定目录下的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.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、总结

helm官网直通车

1、子图表被认为是“独立的”,这意味着子图表永远不能显式依赖其父图表。
2、子图无法访问其父级的值。
3、父图表可以覆盖子图表的值。
4、Helm具有可被所有图表访问的全局值的概念。
5、当指定values.yaml文件时,优先从values.yaml文件中取值


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部