【问题标题】:helm global & subchart - call valueshelm global & subchart - 调用值
【发布时间】:2021-11-16 08:23:14
【问题描述】:

我创建了一个带有子图表的掌舵图表。

全局 helm 图表包含 values.yamlvalues-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,它们的值取自 global chart 的 values.yamlvalues-int.yml,而 not 正如预期的那样来自chart-1chart-2

我希望 global-helm-chart 中的 helm 模板在 configMap 中显示 json: 的值,values-int.yamlchart-1 下。

提前谢谢..

【问题讨论】:

  • 您使用哪些选项来运行helm template?我认为任何东西都不会读取sub-charts/chart1/values-int.yaml,除非您在-f 选项中明确传递该文件名。
  • 当然,我做的命令是:helm template . -f values-int.yaml

标签: kubernetes kubernetes-helm


【解决方案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: { ... }

【讨论】:

猜你喜欢
  • 2021-12-13
  • 1970-01-01
  • 2022-06-12
  • 2020-10-29
  • 2016-09-18
  • 2022-06-16
  • 2019-10-09
  • 2015-05-09
  • 2018-04-15
相关资源
最近更新 更多