helm global & subchart - 调用值
helm global & subchart - call values
我创建了一个带有子图表的 helm 图表。
全局掌舵图包含 values.yaml
和 values-int.yaml
文件。以及所有子图表。
这是结构:
- Global-helm-chart:
- values.yaml
- values-int.yaml
- sub-charts:
- chart-1:
- values.yaml
- value-int.yaml
- templates:
- configmap.yaml
- chart-2:
- values.yaml
- value-int.yaml
- templates:
- configmap.yaml
这是chart-1
下的configmap.yaml
(图2同):
{{- $root := .Values -}}
{{ if eq .Values.global.env "int" }}
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ .Chart.Name }}-configuration"
data:
json: {{ $root.tickets | toJson | quote }}
{{ end }}
这是chart-1
下的values-int.yaml
:
tickets:
dynamicEvents:
topics:
- topic_name: "ai-recommendations-pending-for-review"
events:
- name: "PendingForReview"
parameters:
subject: "$.insightTypeId"
group_uid: "customer_care"
helm template .
from the global chart 会打印出两个configMaps,它们的值取自全局chart的values.yaml
和values-int.yml
以及not 符合预期,来自 chart-1
和 chart-2
.
我希望来自 global-helm-chart 的 helm 模板在 configMap 中显示 json:
,其值 values-int.yaml
在 chart-1
.
下
提前致谢..
Helm 本身并没有您所描述的每个环境值文件的概念。如果你运行
helm template . -f values-int.yaml
在当前目录中读取 ./values-int.yaml
,但不会在任何其他位置查找该文件;特别是它不会尝试在子图表中查找同名值文件。
相反,您需要将所有设置折叠到一个 values-int.yaml
文件中,无论您从哪里 运行 进行部署(它不需要在图表目录中 本身)。带有图表名称的顶级键下的单个文件 includes settings for all of the sub-charts。
因此,文件系统布局为:
global-helm-chart/
+-- Chart.yaml
+-- values.yaml
+-- values-int.yaml
|
\-- charts/
+-- chart1/
| +-- Chart.yaml
| +-- values.yaml
| \-- templates/
| \-- configmap.yaml
|
\-- chart2/
+-- Chart.yaml
+-- values.yaml
\-- templates/
\-- configmap.yaml
顶级 values-int.yaml
将包含:
# Helm values for the integration environment. These override
# settings in values.yaml in this chart and its subcharts.
global:
env: int
chart1:
tickets:
dynamicEvents: { ... }
chart2: { ... }
我创建了一个带有子图表的 helm 图表。
全局掌舵图包含 values.yaml
和 values-int.yaml
文件。以及所有子图表。
这是结构:
- Global-helm-chart:
- values.yaml
- values-int.yaml
- sub-charts:
- chart-1:
- values.yaml
- value-int.yaml
- templates:
- configmap.yaml
- chart-2:
- values.yaml
- value-int.yaml
- templates:
- configmap.yaml
这是chart-1
下的configmap.yaml
(图2同):
{{- $root := .Values -}}
{{ if eq .Values.global.env "int" }}
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ .Chart.Name }}-configuration"
data:
json: {{ $root.tickets | toJson | quote }}
{{ end }}
这是chart-1
下的values-int.yaml
:
tickets:
dynamicEvents:
topics:
- topic_name: "ai-recommendations-pending-for-review"
events:
- name: "PendingForReview"
parameters:
subject: "$.insightTypeId"
group_uid: "customer_care"
helm template .
from the global chart 会打印出两个configMaps,它们的值取自全局chart的values.yaml
和values-int.yml
以及not 符合预期,来自 chart-1
和 chart-2
.
我希望来自 global-helm-chart 的 helm 模板在 configMap 中显示 json:
,其值 values-int.yaml
在 chart-1
.
提前致谢..
Helm 本身并没有您所描述的每个环境值文件的概念。如果你运行
helm template . -f values-int.yaml
在当前目录中读取 ./values-int.yaml
,但不会在任何其他位置查找该文件;特别是它不会尝试在子图表中查找同名值文件。
相反,您需要将所有设置折叠到一个 values-int.yaml
文件中,无论您从哪里 运行 进行部署(它不需要在图表目录中 本身)。带有图表名称的顶级键下的单个文件 includes settings for all of the sub-charts。
因此,文件系统布局为:
global-helm-chart/
+-- Chart.yaml
+-- values.yaml
+-- values-int.yaml
|
\-- charts/
+-- chart1/
| +-- Chart.yaml
| +-- values.yaml
| \-- templates/
| \-- configmap.yaml
|
\-- chart2/
+-- Chart.yaml
+-- values.yaml
\-- templates/
\-- configmap.yaml
顶级 values-int.yaml
将包含:
# Helm values for the integration environment. These override
# settings in values.yaml in this chart and its subcharts.
global:
env: int
chart1:
tickets:
dynamicEvents: { ... }
chart2: { ... }