mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
1565 字
8 分钟
ArgoCD 简介

ArgoCD 简介#

1. 什么是 Argo CD#

Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。

img

官方文档:https://argo-cd.readthedocs.io
源码地址:https://github.com/argoproj/argo-cd

1.1 关于 Argo 项目#

Argo 是一个开源项目,主要扩展 Kubernetes 的原生功能,让应用更好地运行在 Kubernetes 平台上。

GitHub 地址:https://github.com/argoproj

目前 Argo 包含多个子项目:

  • Argo Workflows:基于容器的工作流编排工具,通用性极强
  • Argo CD:基于 GitOps 声明的持续交付工具(本文主角)
  • Argo Events:事件驱动工具
  • Argo Rollouts:支持金丝雀及蓝绿发布的应用渐进式发布工具

1.2 Argo CD 简介#

Argo CD 被实现为 Kubernetes 控制器,持续监控正在运行的应用程序,并将当前实时状态与期望目标状态(如 Git 仓库中的定义)进行比较。

若已部署应用的实时状态与目标状态存在偏差,则被视为 OutOfSync。Argo CD 会报告并可视化这些差异,同时提供将实时状态自动或手动同步回目标状态的功能。

对 Git 仓库中目标状态所做的任何修改,都可以自动应用并反映到指定的目标环境中。

1.3 Argo CD 核心特性#

img

  • 声明式管理:开发者只需在 Git 仓库中定义应用的期望状态,Argo CD 自动将集群的实际状态与之同步,减少人为错误,配置管理更清晰可审计
  • GitOps 工作流:以 Git 仓库作为配置管理的唯一真理来源(Source of Truth),每次部署或更新都通过提交代码和合并请求触发,保证自动化与审核跟踪
  • 持续同步与自愈:持续监控 Kubernetes 集群中的资源状态,检测到偏差时自动纠正,始终保持与 Git 仓库配置一致
  • 多集群支持:可管理多个 Kubernetes 集群,跨集群的应用部署和管理更加便捷
  • 细粒度访问控制:支持基于角色的访问控制(RBAC)及 SSO 集成,精细控制对特定项目和应用的访问权限

1.4 Argo CD vs Jenkins#

功能Argo CDJenkins
架构专注于 Kubernetes 集群的声明式部署通用的 CI/CD 工具,支持多种语言和环境
GitOps 支持内置支持 GitOps,Git 是唯一真理来源需通过插件或自定义脚本支持 GitOps
部署自动化自动同步 Kubernetes 资源配置,持续保持集群一致性通过流水线(Pipeline)手动配置部署过程
可观测性和回滚内置监控和自动回滚功能通过第三方工具或插件实现
插件支持提供基础功能,无需大量插件插件种类丰富,通过插件扩展功能
CI/CD 整合专注于 CD,通常与 Argo Workflows 等工具整合同时支持 CI 和 CD,整合度较高

2. GitOps#

2.1 基础设施即代码(IaC)#

在理解 GitOps 之前,需要先了解**基础设施即代码(Infrastructure as Code, IaC)**的概念。

基础设施即代码表示使用代码来定义基础设施,研发人员可以像对待应用软件一样对待基础设施:

  • 创建包含基础架构规范的声明式配置文件,便于编辑和分发配置
  • 确保每次配置的环境完全一致
  • 支持版本控制
  • 将基础设施划分为若干模块化组件,通过自动化以不同方式进行组合

2.2 什么是 GitOps#

GitOps = IaC + Git + CI/CD,即基于 IaC 的版本化 CI/CD。其核心是使用 Git 仓库管理基础设施和应用的配置,以 Git 仓库作为基础设施和应用的单一事实来源

Git 仓库中的声明式配置描述了目标环境所需基础设施的期望状态。借助 GitOps,若集群的实际状态与 Git 仓库中定义的期望状态不匹配,Kubernetes Reconciler 会自动调整当前状态,最终使实际状态与期望状态一致。

2.3 GitOps vs DevOps#

从广义上看,GitOps 与 DevOps 并不冲突:

  • DevOps 是一种文化,关注最佳实践,可应用于企业每一个流程
  • GitOps 是一种技术手段,是实现持续交付、持续部署和基础设施即代码的工具与框架,支撑 DevOps 文化

主要区别:

GitOpsDevOps
目标导向使用 Git 维护期望状态,不断调整实际状态使其与期望状态匹配关注最佳实践,应用于企业每个流程
操作方式采用声明式操作方法同时接受声明式和命令式方法

2.4 ArgoCD 的优势#

  • Git 作为唯一真实来源:期望状态的唯一存储,配置变更有完整记录可追溯
  • 快速回滚:通过 Git History 切换 commit,将应用状态快速恢复到上一个可用状态
  • 集群灾备:若集群 A 出现故障,只需创建新集群并将 Argo CD 连接到包含集群 A 所有配置声明的 Git 仓库,新集群 B 的状态会自动与旧集群一致,无需人工干预

3. ArgoCD 架构#

img

从功能架构看,Argo CD 主要包含三个核心组件:API ServerRepository ServerApplication Controller

从 GitOps 工作流角度,整个流程分为三个阶段:检索 → 调谐 → 呈现

3.1 检索阶段 - Repository Server#

检索阶段会克隆应用声明式配置清单所在的 Git 仓库,并将其缓存到本地存储。支持以下配置格式:

  • Kubernetes 原生配置清单(YAML/JSON)
  • Helm Chart
  • Kustomize 配置清单

履行这些职责的组件是 Repository Server

3.2 调谐阶段 - Application Controller#

调谐(Reconcile)阶段将 Repository Server 获取的配置清单与反映集群当前状态的实时配置清单进行对比。一旦检测到应用处于 OutOfSync 状态,Application Controller 就会采取修正措施,使集群的实际状态与期望状态保持一致。

3.3 呈现阶段 - API Server#

最后阶段由 API Server 负责,它是一个 gRPC/REST Server,提供无状态的可视化界面,用于展示调谐阶段的结果,并对外暴露 Web UI、CLI 及第三方工具所需的 API 接口。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

ArgoCD 简介
https://hua-ri.cn/posts/argocd简介/
作者
花日
发布于
2026-03-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时