You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm复杂数组变量传递求助:如何引用values.yaml嵌套配置

Helm模板中引用复杂配置的方法

先假设你的values.yaml里的data_fusion配置示例如下:

data_fusion:
  tags:
    - env: prod
    - team: data
    - service: fusion
  instances:
    - name: pipeline1
      pipelines:
        - extract_db
        - transform_data
    - name: pipeline2
      pipelines:
        - sync_s3
        - load_warehouse

下面分场景说明如何在模板中引用这些复杂配置:

1. 引用整个data_fusion区块

直接用toYaml函数将整个结构转为YAML字符串输出,配合nindent控制缩进保证格式正确:

apiVersion: v1
kind: ConfigMap
metadata:
  name: data-fusion-config
data:
  config.yaml: |
    {{- toYaml .Values.data_fusion | nindent 4 }}

2. 引用tags数组

直接输出整个tags数组

tags:
  {{- toYaml .Values.data_fusion.tags | nindent 2 }}

遍历tags数组处理单个元素

如果需要逐个处理每个tag:

{{- range .Values.data_fusion.tags }}
- {{ . | toYaml | nindent 2 }}
{{- end }}

比如在ConfigMap中按键值对输出tag:

apiVersion: v1
kind: ConfigMap
metadata:
  name: data-fusion-tags
data:
{{- range $index, $tag := .Values.data_fusion.tags }}
  tag-{{ $index }}: {{ $tag | toJson }}
{{- end }}

3. 引用嵌套的instances

输出整个instances结构

instances:
  {{- toYaml .Values.data_fusion.instances | nindent 2 }}

遍历instances并访问内部pipelines

如果需要逐个处理每个实例及其关联的流水线:

{{- range .Values.data_fusion.instances }}
instance: {{ .name }}
pipelines:
  {{- toYaml .pipelines | nindent 4 }}
{{- end }}

关键注意点

  • 使用toYaml时必须配合nindent控制缩进,避免YAML格式错误
  • 若需转为JSON格式,替换为toJson函数即可
  • 模板中的.代表当前上下文,.Values.data_fusion即从根上下文的Values中获取目标配置
  • 用{{- ... -}}可以去除多余空白行,让输出更整洁

内容的提问来源于stack exchange,提问作者SoT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:25:34