从子图中访问父(图)上下文

时间:2019-12-02 12:59:22

标签: kubernetes kubernetes-helm

我有一个由几个子图组成的Helm Chart,如下所示:

├── Chart.yaml
├── README.md
├── charts
│   ├── nginx-1.0.0.tgz
│   └── redis-1.0.0.tgz
├── index.yaml
├── requirements.lock
├── requirements.yaml
├── subcharts
│   ├── nginx
│   │   ├── Chart.yaml
│   │   ├── templates
│   │   │   ├── deployment.yaml
│   │   │   ├── service.yaml
│   └── redis
│       ├── Chart.yaml
│       ├── templates
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── values.yaml

在我的根级别 values.yaml中,我在相应的yaml节点下定义(每个图表)值,即文件看起来像这样:

redis:
  namespace: default
  replicas: 1
  image: redis
  tag: 5.0-alpine
  port: 6379
  imagePullPolicy: IfNotPresent
  serviceType: ClusterIP
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: 1000M
      memory: 1500Mi
nginx:
  namespace: default
  istio:
    enabled: false
  replicas: 1
  image: redash/nginx
  tag: latest
  port: 80
  imagePullPolicy: IfNotPresent
  serviceType: LoadBalancer

这些值(层次结构<subchartname>.value中的值可在子图表模板中按以下方式访问:

spec:
  replicas: {{ default 1 .Values.replicas }}

即子图名称没有引用,因为它已成为模板的根上下文。

有没有办法让我的头盔模板访问父(根)上下文值?

我想这样做,以便可以在DRY模式下跨子图共享值。

即或多或少我的问题变成了:

我应该如何从子图表模板访问根级别的值?

myvariable1:
    value1
myvarianle2:
    value2

1 个答案:

答案 0 :(得分:3)

我认为您需要使用可以在子图表之间共享的全局图表值。链接到文档https://helm.sh/docs/topics/chart_template_guide/subcharts_and_globals/#global-chart-values