ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Argo CD 提示 Manifest generation error (cached) 怎么排查?

Argo CD 提示 Manifest generation error (cached) 怎么排查? Argo CD 提示 Manifest generation error (cached) 怎么排查【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd当某个 Application 的状态中持续显示Manifest generation error (cached)时说明 repo-server 在生成目标 manifest 的过程中出过错而当前看到的这条报错并不是原始错误本身——它是被缓存起来的错误信息。Argo CD 文档FAQ给出的解释是Manifest generation error (cached)表示 manifest 生成时发生了错误且错误消息已被缓存以避免不受控制的重复重试runaway retries。因此排查的第一步不是反复刷新而是先搞清楚缓存和原始错误的区别再按下面的路径处理。先弄清这个错误的来源Manifest generation error (cached)这个前缀是 repo-server 在返回缓存的错误时拼出来的对应源码中的常量cachedManifestGenerationPrefix见 reposerver/repository/repository.go。也就是说你看到(cached)时真正的失败原因在第一次生成失败时就已经产生了当前显示只是那份错误的一个副本。这一点对排查方式有直接影响如果失败是临时性的例如仓库短暂不可达、依赖拉取瞬时失败绕过缓存重新生成一次即可恢复如果失败是持续性的例如 manifest 本身有问题、Helm chart 渲染失败绕过缓存只会让同一个错误再次出现。第一步执行 hard refresh绕过缓存的错误Argo CD CLI 提供了 hard refresh它会Refresh application data as well as target manifests cache刷新应用数据以及目标 manifests 缓存即忽略被缓存的错误、强制重新生成一次 manifests。命令参考 argocd app get 命令文档# Perform a hard refresh, including refreshing application data and target manifests cache argocd app get my-app --hard-refresh执行前需要把my-app替换成你的 Application 名称并确保 CLI 已登录到对应的 Argo CD 实例继承选项中的--auth-token、--argocd-context等按你的环境配置。执行后判断依据来自 FAQ 的说法如果问题已经消失、应用恢复正常出状态——说明是临时性故障hard refresh 已经解决如果 hard refresh 之后仍然是同样的错误——按文档原话a hard refresh will not help说明 manifest 生成失败有持续性原因必须去 repo-server 日志里找原始错误。第二步在 repo-server 日志中按应用名搜索原始错误当 hard refresh 不能解决问题时FAQ 给出的定位方法是try searching the repo-server logs for the app name in order to identify the error that is causing manifest generation to fail.也就是到argocd-repo-server组件的日志中搜索你的应用名找到它生成 manifest 时的真实报错。典型做法占位符需按部署实际替换# namespace 换成 Argo CD 安装所在命名空间pod 换成 argocd-repo-server 的 Pod 名 kubectl -n namespace logs argocd-repo-server-pod | grep app-name找到日志后关注与 manifest 生成相关的错误行例如 Helm 依赖拉取失败、kustomize 渲染报错、路径不存在等这些才是需要修复的内容(cached)前缀本身不需要单独处理。排查结论与边界按文档给出的信息这条错误路径的判断逻辑是现象判断动作hard refresh 后错误消失临时性故障无需进一步处理hard refresh 后错误依旧持续性生成失败在 repo-server 日志中按应用名定位原始错误并修复需要注意的限制hard refresh 只是绕过缓存重新尝试它不会修复持续性的根因而缓存的存在是有意设计避免 runaway retries所以不建议通过反复刷新来等它好。如果日志中的原始错误指向 manifest 内容问题chart、路径、模板等下一步就是修改仓库中的对应 manifest 或配置然后让应用重新生成。更多背景可参考 docs/faq.md 中该条目以及 argocd app get 命令参考--hard-refresh参数说明。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进