发布时间:2026/7/30 2:12:05
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/7/30 2:07:05

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

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

2026/7/30 2:07:05

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

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

2026/7/30 2:07:05

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

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

2026/7/30 3:27:10

【无标题】离线python310怎么配置

先进入项目目录,激活虚拟环境,执行下载命令,所有依赖包自动保存到packages文件夹 这个怎么操作完整步骤生成 requirements.txt(必须在本地项目的虚拟环境内执行!)1、打开 CMD,进入你的项目根目录…

2026/7/30 3:27:10

Wireshark网络协议分析入门:从抓包到TCP/HTTP/DNS深度解析

1. 项目概述:从“抓包”到“读心”的计算机网络入门如果你是一名计算机或相关专业的学生,第一次拿到《计算机网络》实验课的指导书,看到“实验一:网络协议分析”或者类似的标题时,心里可能会有点发怵。那些在课本上看起…

2026/7/30 3:27:10

OpenClaw框架Token性能优化实战与最佳实践

1. OpenClaw Token优化实战概述在分布式系统开发中,Token管理一直是影响系统性能的关键因素。最近我在优化一个基于OpenClaw框架的中型项目时,发现Token相关的上下文切换消耗了系统近30%的资源。经过两周的深度调优,最终将这部分开销降低了76…

2026/7/30 3:27:10

TypeScript 7.0 Go语言重写编译器:10倍性能提升架构解析

最近在 TypeScript 社区中,关于编译器性能的讨论热度持续攀升。随着项目规模不断扩大,原有的 TypeScript 编译器在大型代码库中的编译速度逐渐成为开发效率的瓶颈。本文将深入探讨 TypeScript 7.0 中采用 Go 语言重写编译器的技术架构变革,解…

2026/7/30 3:22:10

SpringBoot快速入门:从项目创建到RESTful API实战详解

1. 项目概述:为什么SpringBoot是Java开发的“瑞士军刀”? 如果你刚接触Java后端开发,或者是从传统的Spring MVC项目转过来,第一次听说SpringBoot,可能会有点懵。Spring框架本身已经够复杂了,怎么又冒出来一…

2026/7/29 22:32:30

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/30 0:01:39

[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:01:39

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

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

2026/7/29 13:12:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…