使用pathParamPrefix的两个Git生成器无法工作求助
核心问题点
第二个Git生成器路径模板无效
第二个Git生成器中path: "version/{{.env}}.json"里的{{.env}}无法被解析——Matrix生成器的子生成器是独立执行的,第二个Git生成器无法获取第一个Git生成器输出的env变量,这会导致它找不到对应文件,最终没有任何参数组合生成。模板变量缺失风险
模板中使用了.cluster、.namespace、.project、.rev这些变量,但你的Git生成器输出里是否包含这些字段?由于开启了missingkey=error,只要有一个变量不存在,就会直接导致Application生成失败。路径匹配有效性存疑
第一个Git生成器的路径applications/env/**/matrix.json需要确保仓库中存在符合该模式的文件,**是递归匹配子目录(比如applications/env/dev/matrix.json是合法路径),如果文件路径不符合规则,生成器不会输出任何参数。
排查步骤
单独验证Git生成器输出
拆分测试两个Git生成器,确认各自能否正常输出参数:- 暂时去掉Matrix和第二个Git生成器,只保留第一个Git生成器,通过
kubectl get applicationset matrix-two-git -o yaml查看status.generatedApplications字段,或查看Argo CD日志,确认它能生成参数。 - 单独测试第二个Git生成器,将路径改为具体存在的文件(比如
version/dev.json),确认它能正常输出参数。
- 暂时去掉Matrix和第二个Git生成器,只保留第一个Git生成器,通过
修复第二个Git生成器的路径问题
如果版本文件是按环境命名的,建议将版本信息整合到第一个Git生成器的matrix.json文件中,或者改用List生成器结合Git生成器(而非Matrix)。例如在matrix.json中新增版本相关字段,或调整路径规则让第一个Git生成器同时匹配应用文件和版本文件。检查模板变量完整性
确保第一个Git生成器的matrix.json文件包含所有模板用到的变量,示例格式如下:{ "cluster": "dev-cluster", "namespace": "dev", "project": "default", "rev": "main" }查看控制器日志定位错误
查看Argo CD ApplicationSet控制器的日志,里面会详细记录生成器执行的错误信息(比如路径不存在、变量缺失等):kubectl logs -n argocd deployment/argocd-applicationset-controller确认Git仓库访问权限
确保Argo CD有权限访问目标Git仓库(https://github.com/myrepo/test-app),私有仓库需配置对应的Secret或SSH密钥。
内容的提问来源于stack exchange,提问作者Ramki

