Argo CD App of Apps 模式深度解析:像管理应用一样管理应用
Argo CD App of Apps 模式深度解析像管理应用一样管理应用当你用 Argo CD 部署第一个应用时一切都简单美好。但当你需要管理几十上百个应用、实现一键自举整个集群或者让团队自助创建部署环境时手动一个个创建 Application 就变成噩梦。App of Apps 模式正是为解决这类问题而生它让你把 Application 当作普通资源进行编排真正实现“用 GitOps 管理 GitOps”。目录从单个 Application 到批量管理之痛什么是 App of Apps 模式为什么需要 App of Apps工作原理一个 Application 管理一群 Application实战从零构建 App of Apps5.1 准备 Git 仓库目录5.2 编写子 Application5.3 编写根 Application5.4 部署并观察5.5 应用更新与维护App of Apps vs ApplicationSet怎么选高级变体与自举Bootstrap最佳实践与避坑指南总结1. 从单个 Application 到批量管理之痛在 Argo CD 中每个应用Application对应一个 Git 仓库中的配置集合。当你只有几个服务时可以直接用argocd app create或手动 apply 几个 Application YAML 来解决。但随着业务增长你可能面临微服务拆分50 个微服务需要 50 个 Application每次新增服务都要手动创建。多环境推广同一套应用要部署到 dev / staging / prod每个环境都要有一组 Application。团队自助每个团队需要独立部署自己的服务但不能给他们 Argo CD 的管理员权限。集群重建当需要重建集群时能不能一键把所有应用都部署回来面对这些需求靠手工管理 Application 资源肯定不行。于是诞生了两种批量管理思路App of Apps 模式和ApplicationSet。今天我们先深入讲解 App of Apps它更简单、更灵活是很多团队的首选起点。2. 什么是 App of Apps 模式App of Apps 不是一个特定的 API 对象而是一种架构模式。其核心思想是用一个“根 Application”来管理一组“子 Application”这些子 Application 的定义文件本身也存放在 Git 仓库中根 Application 通过指向该目录将它们 apply 到集群。简单说就是把 Application 的 YAML 文件当成普通 Kubernetes 资源来部署而 Argo CD 认出了这些 Application 资源就会自动去接管它们所描述的应用。一句话概括用 Argo CD 来部署 Argo CD 的 Application实现元级别的管理。3. 为什么需要 App of Apps相比手工管理App of Apps 带来几个关键收益一键自举新集群初始化时只需部署一个根 Application所有业务应用自动部署。声明式统一管理所有子 Application 的定义都在 Git 中版本化、可审计、可回滚。权限控制不同团队可以维护自己的 Application 定义文件提 PR 来管理服务无需接触 Argo CD 本身。组合灵活你可以把根 Application 指向不同的目录分别管理“基础设施应用”“业务应用”“监控组件”等。本质上App of Apps 把Application 的管理也纳入了 GitOps 的范围。4. 工作原理一个 Application 管理一群 Application假设你有一个 Git 仓库结构如下textargocd-apps/ ├── root-app.yaml # 根 Application └── team-a/ ├── frontend-app.yaml # 子 Application └── backend-app.yaml根 Application的source.path指向仓库根目录.它会扫描该目录下所有的 YAML 文件。当根应用同步时Argo CD 将team-a/frontend-app.yaml和team-a/backend-app.yaml中的 Application 对象应用到集群。Argo CD 的应用控制器监测到新的 Application 资源开始独立管理它们分别从各自的 Git 源拉取配置并部署实际的服务。注意根 Application 本身也是一个 Application它需要被创建一次。你可以手动创建它或者用更高层级的 App of Apps 来创建它听起来像套娃确实可以。5. 实战从零构建 App of Apps5.1 准备 Git 仓库目录创建一个名为app-of-apps-demo的 Git 仓库结构如下textapp-of-apps-demo/ ├── root-app.yaml ├── apps/ │ ├── guestbook-app.yaml │ └── nginx-app.yaml其中root-app.yaml就是根 Applicationapps/目录下是子 Application 的定义。5.2 编写子 Applicationapps/guestbook-app.yaml与以前创建的 guestbook 应用相同yamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: server: https://kubernetes.default.svc namespace: guestbook syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespacetrueapps/nginx-app.yamlyamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: nginx namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: nginx destination: server: https://kubernetes.default.svc namespace: nginx syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespacetrue5.3 编写根 Application根 Application 指向仓库根目录路径.会递归发现所有 YAMLyaml# root-app.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: root-app namespace: argocd spec: project: default source: repoURL: https://github.com/your-org/app-of-apps-demo.git targetRevision: HEAD path: . destination: server: https://kubernetes.default.svc namespace: argocd syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespacetrue注意这里path: .会包含自身root-app.yaml但因为 Argo CD 只在同一个 Application 资源中管理自己根应用不会管理自己的同步这不会造成问题。但为了干净你也可以把根应用放在仓库别处例如一个bootstrap/目录通过 kubectl 手动 apply让仓库内的apps/只包含子应用。5.4 部署并观察首先确保你已经安装好 Argo CD 并登录。手动部署根 Application这通常是一次性操作bashkubectl apply -f root-app.yaml或者通过 Argo CD CLIbashargocd app create root-app \ --repo https://github.com/your-org/app-of-apps-demo.git \ --path . \ --dest-server https://kubernetes.default.svc \ --dest-namespace argocd \ --sync-policy automated \ --auto-prune \ --self-heal同步根应用bashargocd app sync root-app几秒钟后在 Argo CD 的 UI 中你会看到root-app自动创建了guestbook和nginx两个子 Application并且它们会立即开始同步自己的资源。最终guestbook 和 nginx 服务被部署到对应命名空间。5.5 应用更新与维护新增一个服务在apps/目录下添加一个新的xxx-app.yaml提交到 Git根应用下一次同步或自动同步就会在集群中创建新的 Application。删除一个服务从仓库中删除对应的 Application YAML根应用同步后由于根应用开启了prune: true它会将集群中不再存在的 Application 删除。子 Application 删除时根据其自身的 syncPolicy 可能会删除实际部署的资源。修改子 Application 配置直接修改子 Application 的 YAML例如更改 namespace、源路径提交后根应用会同步更新。这比手动argocd app set更符合 GitOps 理念。6. App of Apps vs ApplicationSet怎么选我们在上一篇文章已经详细介绍了 ApplicationSet这里再做一个集中对比特性App of AppsApplicationSet本质模式用根 Application 管理静态子 Application YAMLCRD用生成器动态生成 Application子应用数量由仓库中静态 YAML 数量决定由生成器输出决定可动态变化新增应用需要人往 Git 加一个 YAML可以自动感知新分支/新集群/新目录等多集群需要为每个集群写一个 ApplicationCluster 生成器自动为新集群生成应用参数化能力弱要靠 Helm/Kustomize 辅助内建模板变量非常灵活复杂度低纯 Git 操作中需要理解生成器适用场景中小规模固定应用集合需人类审批大规模动态环境PR 预览、多租户推荐策略应用数量少、环境固定 → 用 App of Apps 简单直接。需要多集群、自动发现、参数化 → 用 ApplicationSet。两者可以共存用 App of Apps 部署一个 ApplicationSet或者用 ApplicationSet 管理一组 App of Apps 仓库。7. 高级变体与自举Bootstrap7.1 分层 App of Apps你可以有多个根应用分别管理不同类别的服务textbootstrap/ ├── infra-root.yaml → 指向 infra-apps/ 目录 ├── business-root.yaml → 指向 business-apps/ 目录 └── monitoring-root.yaml → 指向 monitoring-apps/ 目录这样更新监控组件不影响业务应用。7.2 自举Bootstrap用 App of Apps 管理 Argo CD 自身更进一步你可以用一个“超级根应用”来管理 Argo CD 的安装和配置textbootstrap/ └── bootstrap-root.yaml → 指向 argocd/ 目录该目录中包含 argocd 的 Helm Chart 或 Application YAML新集群只需要执行bashkubectl apply -f bootstrap-root.yamlArgo CD 就会被创建然后这个 Argo CD 会管理自己包括升级实现完整的 GitOps 自举。这种模式在企业管理数十个集群时非常强大。8. 最佳实践与避坑指南清晰划分目录按团队、环境或服务类型划分子目录避免单个目录文件过多。使用项目Project隔离不同团队的子 Application 应属于不同的 Project限制其可访问的仓库和集群。控制 prune 行为根应用开启prune: true意味着删除子 Application YAML 会删除整个应用务必谨慎。如果只是暂时停用可以先注释掉或移出目录。防止循环依赖不要让根应用管理的子应用又去管理根应用否则会造成不可预知的行为。秘密管理Application 定义中如果包含敏感信息例如 repo 密码应该使用 Sealed Secrets 或 External Secrets不要明文提交到 Git。监测根应用的健康状态根应用如果出问题所有子应用都会受影响。设置告警监控root-app的同步状态。版本化 Application 定义所有子 Application 的 YAML 文件应随着应用仓库一起打 tag便于回滚。9. 总结App of Apps 是 Argo CD 最经典的管理模式之一它简单、直接、易理解。你不需要学习新 CRD只需要把 Application 视为普通的 Kubernetes 资源利用 Git 和根 Application 来批量编排它们。当你已经熟练使用 App of Apps 后再结合 ApplicationSet 的动态生成能力就能构建出弹性、可扩展的 GitOps 体系。无论是 10 个还是 1000 个应用都能从容应对。试着把你现在手动管理的几个 Application 迁移到 App of Apps 模式吧感受一下“一键部署全世界”的愉悦。如果这篇文章让你对 App of Apps 有了更清晰的认识欢迎点赞、收藏。你是否也在使用这套模式有什么踩坑经验评论区等你分享

相关新闻

AutoUnipus:3分钟完成U校园学习的终极免费指南

AutoUnipus:3分钟完成U校园学习的终极免费指南

AutoUnipus:3分钟完成U校园学习的终极免费指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 还在为U校园平台繁重的网课任务感到压力吗?每天花费数小时…

2026/7/30 14:15:01阅读更多 →
如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南

如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南

如何一键备份QQ空间历史说说:GetQzonehistory终极数据保存指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否还记得十年前在QQ空间写下的第一条说说?那些…

2026/7/30 14:13:01阅读更多 →
51单片机计算器项目实战:从矩阵键盘到数码管显示的嵌入式入门指南

51单片机计算器项目实战:从矩阵键盘到数码管显示的嵌入式入门指南

1. 项目缘起:从“玩具”到“敲门砖”的51单片机计算器很多刚接触51单片机的朋友,可能都做过流水灯、按键扫描、数码管显示这些基础实验。做多了,难免会想:能不能把这些零散的知识点串起来,做一个稍微有点“意思”的小项…

2026/7/30 14:13:01阅读更多 →
如何用1个工具在100个Excel文件中秒级定位目标数据?

如何用1个工具在100个Excel文件中秒级定位目标数据?

如何用1个工具在100个Excel文件中秒级定位目标数据? 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对海量Excel文件中的数据检索需求,传统的手工搜索方式已无法满足现代数据…

2026/7/30 15:29:18阅读更多 →
GJB 5000B与A版深度对比:从过程合规到价值交付的范式跃迁

GJB 5000B与A版深度对比:从过程合规到价值交付的范式跃迁

1. 项目概述:从A到B,一次软件工程管理范式的跃迁 如果你在军工软件研发领域摸爬滚打过几年,那么“GJB 5000”这几个字,大概率是你职业生涯中绕不开的一座大山。它不仅仅是一套标准,更像是一套“生存法则”,…

2026/7/30 15:29:18阅读更多 →
从零实现BP神经网络:Python代码详解与房价预测实战

从零实现BP神经网络:Python代码详解与房价预测实战

1. 项目概述:从零构建一个可用的BP神经网络 如果你对“神经网络”这个词既感到好奇又觉得高深莫测,觉得它离自己很远,那今天这篇分享或许能改变你的看法。我最初接触神经网络时,也以为需要深厚的数学功底和庞大的计算集群&#xf…

2026/7/30 15:29:18阅读更多 →
蓝闪行动(Operation BlueDash)钓鱼攻击链与合法 RMM 工具滥用防御研究

蓝闪行动(Operation BlueDash)钓鱼攻击链与合法 RMM 工具滥用防御研究

摘要 远程监控与管理(RMM)工具本是企业 IT 运维标准化工具,依托官方数字签名、加密通信、系统级权限实现终端远程运维,却逐步成为黑产实施持久化入侵的核心载体。2026 年 2 月起持续活跃的蓝闪行动(Operation BlueDash…

2026/7/30 15:29:18阅读更多 →
终极指南:如何用scrcpy将Android投屏性能提升300%

终极指南:如何用scrcpy将Android投屏性能提升300%

终极指南:如何用scrcpy将Android投屏性能提升300% 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 您是否在使用scrcpy时遇到过画面卡顿、延迟过高或连接不稳定的问题&#xff1…

2026/7/30 15:29:18阅读更多 →
CVE-2026-42533 NGINX map漏洞复现、检测修复完整实操教程

CVE-2026-42533 NGINX map漏洞复现、检测修复完整实操教程

2026年7月,F5官方披露了NGINX高危漏洞CVE-2026-42533。这个隐藏长达18年的底层漏洞,存在于NGINX核心的map正则解析模块,绝大多数线上服务器默认启用该模块,受影响覆盖面极广。 和普通配置错误、业务层BUG不同,该漏洞杀…

2026/7/30 15:27:18阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →