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

Helm合并预定义与values中listenerProcessor数组后遍历报错问询

问题原因

你调用fromYaml解析nifi.listener-processor.spec模板输出的内容后,得到的是一个顶层包含listenerProcessor(监听器处理器)键的字典对象,而非直接的监听器处理器数组。你直接遍历这个顶层字典时,遍历到的第一个元素键是listenerProcessor,值才是你需要的处理器数组,自然无法直接读取.name字段。

修复方案

1. 修正_helper.tpl中的数组合并逻辑

你当前的模板拼接逻辑存在两个问题:一是values.yaml中listenerProcessor是顶层数组,没有.ports子属性,你调用.Values.listenerProcessor.ports会取空值;二是拼接自定义数组时没有处理缩进,会导致生成的YAML结构异常。修正后的模板如下:

{{- define "nifi.listener-processor.spec" -}}
listenerProcessor:
- name: nbinorc
  port: 9910
  allowedPath: 
  - /nbi/norc/tmf641/v4/orders/
  - /nbi/norc/tmf645/v4/serviceQualification
- name: nbiuiv
  port: 9920
  allowedPath: 
  - /nbi/uiv/tmf640/v4/services/
{{- with .Values.listenerProcessor }}
{{ toYaml . | nindent 2 }}
{{- end }}
{{- end -}}

这里用with判断避免listenerProcessor未定义时报错,用nindent 2保证自定义数组项的缩进和预定义项对齐,确保生成的YAML结构合法。

2. 修正NOTES.txt的遍历逻辑

解析YAML后先提取listenerProcessor数组再遍历即可:

{{- $listenerProcessorSpec := (include "nifi.listener-processor.spec" . ) | fromYaml }}
{{- range $index, $element := $listenerProcessorSpec.listenerProcessor }}
  {{ .name }}
  {{ .port }}
{{- end }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:03