我有一个由几个子图组成的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
答案 0 :(得分:3)
我认为您需要使用可以在子图表之间共享的全局图表值。链接到文档https://helm.sh/docs/topics/chart_template_guide/subcharts_and_globals/#global-chart-values