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 有了更清晰的认识欢迎点赞、收藏。你是否也在使用这套模式有什么踩坑经验评论区等你分享

相关新闻

导师推荐 一键生成论文工具测评:2026最新榜单与使用体验分享

导师推荐 一键生成论文工具测评:2026最新榜单与使用体验分享

2026年真正好用的一键生成论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。…

2026/7/30 14:13:47 阅读更多 →
AD7606-4数据异常排查:从电源、时序到软件驱动的系统性解决方案

AD7606-4数据异常排查:从电源、时序到软件驱动的系统性解决方案

1. 项目概述:当精密ADC开始“说谎” AD7606-4,一个在工业数据采集、电力监控、高端测试设备等领域被广泛信赖的8通道、16位同步采样ADC。它的核心价值在于其高精度、高同步性和强大的抗干扰能力。然而,当这个可靠的“数据哨兵”开始输出异常数…

2026/7/30 14:13:47 阅读更多 →
蓝桥杯单片机竞赛:模块化与时间片轮询的底层代码模板实战

蓝桥杯单片机竞赛:模块化与时间片轮询的底层代码模板实战

1. 项目概述:为什么我们需要一个“模板”?搞过蓝桥杯单片机赛项的朋友,尤其是从省赛一路杀到国赛的,应该都深有体会:比赛时间就那么几个小时,从零开始搭框架、写驱动、调逻辑,时间根本不够用。很…

2026/7/30 14:13:47 阅读更多 →

最新新闻

PNG格式深度解析:从原理到实战优化与WebP对比

PNG格式深度解析:从原理到实战优化与WebP对比

1. 从一次“图片变胖”的线上事故说起 去年,我们团队负责的一个面向C端用户的H5活动页上线后,突然收到大量用户反馈,说页面加载速度极慢,尤其是在移动网络下,几乎无法正常浏览。我们紧急排查,发现罪魁祸首是…

2026/7/30 14:20:50 阅读更多 →
魔兽世界字体合并工具:3步打造完美游戏字体体验终极指南

魔兽世界字体合并工具:3步打造完美游戏字体体验终极指南

魔兽世界字体合并工具:3步打造完美游戏字体体验终极指南 【免费下载链接】Warcraft-Font-Merger Warcraft Font Merger,魔兽世界字体合并/补全工具。 项目地址: https://gitcode.com/gh_mirrors/wa/Warcraft-Font-Merger 还在为魔兽世界中的中文字…

2026/7/30 14:20:50 阅读更多 →
低代码Agent编排平台的技术挑战与实践路径

低代码Agent编排平台的技术挑战与实践路径

1. 低代码Agent编排平台的本质与争议 最近两年,低代码Agent编排平台突然成了行业热点。各种宣传材料都在强调"无需编码"、"可视化编排"、"智能自动化"这些诱人标签。但作为一个实际参与过多个Agent项目落地的从业者,我发现…

2026/7/30 14:20:50 阅读更多 →
降AI处理后论文质量会下降吗深度解读:降AI对论文内容影响完整分析

降AI处理后论文质量会下降吗深度解读:降AI对论文内容影响完整分析

降AI处理后论文质量会下降吗深度解读:降AI对论文内容影响完整分析 关于降AI处理后论文质量会下降吗,我系统研究过一段时间,也实际验证过各种说法。 这篇文章把关键逻辑理清楚——知道了原理,遇到问题就知道该怎么处理了。 降AI处…

2026/7/30 14:20:49 阅读更多 →
5分钟搞定VRChat模型:Cats Blender插件完全指南

5分钟搞定VRChat模型:Cats Blender插件完全指南

5分钟搞定VRChat模型:Cats Blender插件完全指南 【免费下载链接】cats-blender-plugin :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser, Blender Rigi…

2026/7/30 14:20:49 阅读更多 →
江西彩色纹身清洗靠谱机构看这几项

江西彩色纹身清洗靠谱机构看这几项

想在江西找到靠谱的彩色纹身清洗机构,很多人容易陷入选择困境,有些人找了三个月还是没头绪。一方面彩色纹身色素颗粒分散,清洗难度高于普通黑灰纹身,对机构的专业能力要求更高;另一方面不同机构的设备、流程差异较大&a…

2026/7/30 14:19:49 阅读更多 →

日新闻

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

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

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

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻