Argo CD 从零到一:手把手教你搭建 GitOps 工作流

发布时间:2026/9/15 21:34:23

Argo CD 从零到一:手把手教你搭建 GitOps 工作流 Argo CD 从零到一手把手教你搭建 GitOps 工作流上一篇文章我们聊了 Argo CD 的架构和原理这篇直接上硬货——从零开始搭建一套完整的 Argo CD 环境包括安装、配置 Git 仓库、连接集群、创建应用、设置自动同步以及常见问题排查保你一次跑通。目录准备工作安装 Argo CD访问 Argo CD 控制台配置 Git 仓库与凭据添加目标 Kubernetes 集群创建你的第一个 Application开启自动同步与自愈实战App of Apps 模式部署多应用常见问题与排错指南总结1. 准备工作开始前请确保你拥有以下环境一个可用的 Kubernetes 集群版本 ≥1.21可使用 minikube、kind、k3s 或云厂商托管集群。本地安装kubectl并配置好 kubeconfig可以正常操作集群。安装 Argo CD CLI可选但强烈推荐方便后续操作。一个 Git 仓库如 GitHub、GitLab用于存放应用配置。验证集群连通性bashkubectl cluster-info2. 安装 Argo CDArgo CD 官方提供了一份标准的安装清单直接 apply 即可在集群中部署。bash# 创建 argocd 命名空间 kubectl create namespace argocd # 安装 Argo CD推荐稳定版 kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml该清单会在argocd命名空间下部署以下核心组件argocd-serverAPI 服务器和 Web UIargocd-repo-server仓库服务器argocd-application-controller应用控制器argocd-redis缓存服务查看 Pod 状态bashkubectl get pods -n argocd -w等待所有 Pod 变为Running状态。3. 访问 Argo CD 控制台Argo CD 默认使用自签名证书通过端口转发即可在本地访问 Web UI。3.1 获取初始管理员密码bashkubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath{.data.password} | base64 -d复制输出的密码。3.2 端口转发bashkubectl port-forward svc/argocd-server -n argocd 8080:443打开浏览器访问https://localhost:8080忽略证书警告使用用户名admin和刚才获取的密码登录。4. 配置 Git 仓库与凭据为了让 Argo CD 能够拉取你的私有 Git 仓库需要添加凭据。4.1 通过 CLI 添加仓库推荐bashargocd login localhost:8080 --username admin --password your-password --insecure添加 Git 仓库以 HTTPS 为例bashargocd repo add https://github.com/your-org/your-repo.git \ --username your-github-user \ --password personal-access-token4.2 通过 UI 添加仓库登录 Web UI →Settings→Repositories→Connect Repo输入仓库 URL 和凭据即可。5. 添加目标 Kubernetes 集群默认情况下Argo CD 已经连接了自己所在的集群https://kubernetes.default.svc。若需管理外部集群需要添加目标集群。5.1 列出当前已连接的集群bashargocd cluster list5.2 添加外部集群假设外部集群的 kubeconfig 文件为external-cluster.yamlbashargocd cluster add external-context --kubeconfig external-cluster.yaml其中external-context是 kubeconfig 中配置的 context 名称。添加成功后在 UI 的Settings → Clusters中可看到所有集群。6. 创建你的第一个 Application现在我们来部署一个示例应用。假设仓库https://github.com/your-org/your-repo.git中有一个guestbook目录包含 Kubernetes 资源 YAML 文件。6.1 通过 CLI 创建bashargocd app create guestbook \ --repo https://github.com/your-org/your-repo.git \ --path guestbook \ --dest-server https://kubernetes.default.svc \ --dest-namespace guestbook \ --sync-policy none--repoGit 仓库地址--path应用配置所在的目录相对于仓库根目录--dest-server目标集群的 API Server 地址默认集群使用https://kubernetes.default.svc--dest-namespace部署到的命名空间需提前创建或开启自动创建--sync-policy稍后设置自动同步这里先设为none6.2 通过 YAML 创建yaml# guestbook-app.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/your-org/your-repo.git targetRevision: HEAD path: guestbook destination: server: https://kubernetes.default.svc namespace: guestbook syncPolicy: syncOptions: - CreateNamespacetrue # 自动创建命名空间然后 applybashkubectl apply -f guestbook-app.yaml此时 Argo CD 会立即从 Git 拉取配置并对比集群状态UI 中显示OutOfSync因为尚未部署。7. 开启自动同步与自愈为了让集群状态自动跟随 Git 仓库变化需要在 Application 中配置自动化同步策略。7.1 通过 CLI 设置自动同步bashargocd app set guestbook --sync-policy automated --auto-prune --self-heal--auto-prune仓库中删除的资源也会从集群中删除--self-heal集群中手动修改会被自动回滚到 Git 定义7.2 通过 YAML 补全在 Application YAML 中补充yamlsyncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespacetrue更新后bashargocd app sync guestbook应用状态将变为Synced和Healthy。验证自愈效果手动修改集群中的 Deployment 副本数bashkubectl scale deployment guestbook-ui -n guestbook --replicas5几秒钟后Argo CD 会自动将其恢复为 Git 中定义的副本数。8. 实战App of Apps 模式部署多应用当需要管理几十上百个应用时推荐使用App of Apps模式。8.1 准备仓库结构textargocd-apps/ ├── app-of-apps.yaml ├── team-a/ │ ├── frontend-app.yaml │ └── backend-app.yaml └── team-b/ └── api-app.yaml其中frontend-app.yaml和backend-app.yaml等文件本身就是 Argo CD 的 Application 对象描述子应用。8.2 定义根 Applicationyaml# app-of-apps.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: app-of-apps namespace: argocd spec: project: default source: repoURL: https://github.com/your-org/argocd-apps.git path: . targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: argocd syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespacetrue注意根应用的path指向仓库根目录.它会递归发现目录下的所有 Application 资源。8.3 部署根应用bashargocd app create app-of-apps \ --repo https://github.com/your-org/argocd-apps.git \ --path . \ --dest-server https://kubernetes.default.svc \ --dest-namespace argocd \ --sync-policy automated \ --auto-prune \ --self-heal几分钟后所有子应用将自动创建并开始同步各自的资源。9. 常见问题与排错指南9.1 无法连接 Git 仓库确认凭据是否正确用户名/密码、Token。如果是自签名证书的 Git 服务器需在 Argo CD 中配置tlsClientConfig跳过验证或添加 CA。9.2 应用始终 OutOfSync检查repo/path是否正确仓库中是否存在期望的 YAML 文件。使用argocd app diff app-name查看具体差异。检查目标命名空间是否存在或开启CreateNamespacetrue。9.3 同步失败提示资源已存在可能是资源已由其他方式创建需要先删除或通过 Argo CD 接管。可在 Application 中配置syncPolicy.syncOptions如Replacetrue或ApplyOutOfSyncOnlytrue。9.4 自愈不生效检查 Application 的syncPolicy.automated.selfHeal是否为true。查看 controller 日志kubectl logs -n argocd deployment/argocd-application-controller。9.5 Webhook 未触发同步确保 Git 仓库配置的 Webhook URL 可达Argo CD 的 Service 需暴露或使用 Ingress。查看argocd-server日志是否有 Webhook 请求记录。10. 总结通过以上步骤你已经成功搭建了 Argo CD实现了从 Git 仓库自动同步应用到 Kubernetes 集群的完整 GitOps 工作流。回顾核心流程安装 Argo CD 到集群配置 Git 仓库访问凭据创建 Application 指向目标配置开启自动同步、自愈和清理通过 App of Apps 扩展至大规模管理下一步你可以尝试集成 Sealed Secrets 管理密钥、使用 Image Updater 自动更新镜像版本或与 Argo Rollouts 结合实现渐进式交付。GitOps 的大门已经敞开动手实践就是最好的学习方式。这篇文章带你从零搭建了 Argo CD如果解决了你的问题欢迎点赞、收藏。有任何踩坑经验评论区等你分享
延伸阅读

更多相关文章

2026/9/13 3:28:00

如何进行软件设计 - OSCHINA - 开源 × AI · 开发者生态社区

首发于wx【小小寰宇】 软件开发中有一个常见的误区:拿到需求就开始编码,边做边想。这种做法在小型项目中或许可行,但面对复杂系统时,缺乏设计的后果往往是返工、烂尾或者难以维护。 软件设计,本质上是一种预先的思考—…

2026/9/12 21:46:41

微软感知计划深度解析:AI时代网络安全防御的全新范式

当攻击者开始用人工智能以毫秒级速度发起渗透时,企业的安全团队还在手动翻阅成千上万条告警日志。这种攻防节奏的断层,已经成为当下网络安全领域最尖锐的矛盾。 微软给出的答案,是一套从零为AI时代打造的智能体安全系统——Project Percepti…

2026/9/13 13:29:27

近红外光谱分析:从分子振动原理到化学计量学建模实战

1. 从分子振动到光谱信号:理解近红外的起点搞了近十年的光谱分析,从实验室的傅里叶变换红外到现在的便携式近红外,我最大的感触是:很多人一上来就想调模型、跑算法,却把最根本的物理图像给丢了。这就像盖楼不打地基&am…

2026/9/15 21:33:40

选对跨境电商哪个平台好靠3个免费工具搞定

选对跨境电商哪个平台好靠3个免费工具搞定 网站上线三个月,后台数据一片惨绿,每天访问量个位数。这种“网站做好了没人访问”的绝望感,做过站的人谁没体会过?别急着甩锅给运气,90%的问题出在选型上。很多老板问“跨境电商哪个平台好”,其实不是平台…

2026/9/15 21:33:40

电控工程师不会被AI取代,但必须学会与AI共生

1. 这个问题我被问了至少37次——从产线调试现场到高校讲座后台“张工,您说AI现在能写PLC程序了,我们这些干了十五年梯形图的人,是不是明年就得转行送外卖?”去年在苏州某汽车零部件厂做伺服系统联调时,一位老师傅蹲在…

2026/9/15 21:33:40

AI物流客服系统:解决家居行业售后痛点的关键技术

1. 项目背景与行业痛点家居行业的物流售后一直是消费者体验的"阿喀琉斯之踵"。根据2023年家居消费白皮书显示,78%的差评集中在物流环节,其中"到货时间不确定"(43%)、"破损理赔慢"(29%&a…

2026/9/15 21:33:40

神经网络入门与实践:从原理到MNIST手写识别

1. 神经网络学习入门指南第一次接触神经网络时,我被这个看似神秘的概念深深吸引。记得2012年AlexNet在ImageNet竞赛中一战成名时,我正在大学实验室里调试传统机器学习模型。当时完全没想到,这种模拟人脑神经元连接方式的计算模型,…

2026/9/15 21:33:40

AI辅助教材编写:低查重工具原理与实战指南

1. AI教材编写的新时代挑战与机遇教材编写历来是教育工作者和内容创作者面临的重大挑战。传统教材编写过程中,作者需要投入大量时间进行资料收集、内容编排和语言组织,整个过程往往耗时数月甚至数年。而随着AI技术的快速发展,这一局面正在发生…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码