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

如何在Argo AppSet中实现生成器间传值并用作过滤器?

问题解决:Git生成器读取的值作为List生成器过滤器的正确实现

你的需求是可行的,问题出在Matrix生成器子生成器的变量引用逻辑上。当前配置中Git和List生成器是并行执行的,导致List生成器无法直接获取Git生成器输出的变量。以下是正确的实现方式:

正确配置示例

generators:
  - matrix:
      generators:
        # 通过Git生成器读取override.yaml,输出environmentType和clusterList变量
        - git:
            repoURL: https://github.com/JCodeX-Dev/JCodeXClusterPublic
            revision: main
            files:
              - path: helm-charts/override.yaml
        # 基于Git生成的变量,用List生成器过滤目标集群
        - list:
            elementsYaml: '{{ .clusterList | toYaml }}'
            selector:
              matchLabels:
                cluster: '{{ .environmentType }}'

关键说明

  • 变量作用域:Matrix生成器的子生成器会按顺序合并变量,Git生成器输出的environmentType和clusterList会被后续的List生成器继承并可用。
  • 模板语法注意:YAML中使用Go模板时,需要用单引号包裹模板表达式,避免YAML解析器把{{ ... }}当成特殊字符处理。
  • 过滤逻辑验证:配置生效后,List生成器会从clusterList中筛选出cluster字段等于environmentType(即green)的条目,最终生成的矩阵参数只会包含cluster: green那一组数据。

测试验证

你可以通过argo generate命令提前验证生成器输出:

argo generate <workflow-template-name>

执行后应该只输出对应green集群的参数,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:32:41