helm-chart6,子chart 和全局值

chart可以有称为子chart的依赖关系

关于子chart

1,子chart认为是“独立的”,即子chart不能明确依赖于其父chart。
2,子chart无法访问其父项的值。
3,父chart可以覆盖子chart的值。
4,Helm有全局值的概念,可以被所有chart访问。

创建一个空的子chart

$ cd mychart/charts
$ helm create mysubchart
Creating mysubchart
$ rm -rf mysubchart/templates/*.*

添加一个configmap:mychart/charts/mysubchart/templates/configmap.yaml  

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-cfgmap2
data:
  dessert: {{ .Values.dessert }}

独立测试这个子chart:

$ helm install --dry-run --debug mychart/charts/mysubchart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/_scratch/mychart/charts/mysubchart
NAME:   newbie-elk
TARGET NAMESPACE:   default
CHART:  mysubchart 0.1.0
MANIFEST:
---
# Source: mysubchart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: newbie-elk-cfgmap2
data:
  dessert: cake
  
  

一切正常。

覆盖子chart值

要覆盖子chart中的值,可以在父chart 的values.yaml文件中这样写:

favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions
  
mysubchart:  # 注意此处名称
  dessert: ice cream
  

再次测试子chart ,则其值已经改变。

data:
    dessert: ice cream

全局chart值

全局值是可以从任何chart或子chart用完全相同的名称访问的值。全局值需要明确声明。

全局值的声明方式:

favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions

mysubchart:
  dessert: ice cream

global:
  salad: caesar

这样,则mychart/templates/configmap.yaml和mysubchart/templates/configmap.yaml都能够这样访问该值{{ .Values.global.salad}}。

  
  
此外,父chart和子chart可以共享模板。任何chart中的任何定义块都可用于其他chart。

猜你喜欢

转载自www.cnblogs.com/mingbai/p/helmChart6.html