1、什么是Argo CD
Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。
Argo CD官方文档地址:https://argo-cd.readthedocs.io
Argo CD源码地址: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
- 声明式管理:Argo CD 采用声明式的管理方式,开发者只需在 Git 仓库中定义好应用的期望状态,Argo CD
就会自动将集群的实际状态与之同步。这样可以减少人为错误,并使配置管理更加清晰和可审计。 - GitOps 工作流:Argo CD 将 Git 仓库作为配置管理的唯一真理来源(Source of Truth),实现了 GitOps
的最佳实践。每一次应用的部署或更新都通过提交代码和合并请求触发,从而保证了自动化和审核跟踪。 - 持续同步和自愈:Argo CD 能够持续监控 Kubernetes 集群中的资源状态,并在检测到任何偏离期望状态的情况时自动纠正,使集群的状态始终与
Git 仓库中的配置一致。 - 多集群支持:Argo CD 可以管理多个 Kubernetes 集群,使得跨集群的应用部署和管理更加容易。
- 细粒度访问控制:Argo CD 提供了细粒度的访问控制机制,允许基于角色的访问控制(RBAC)以及通过 SSO 集成来控制对特定项目和应用的访问权限。
1.4 Argo CD 与 Jenkins 的对比
功能 | Argo CD | jenkins |
---|---|---|
架构 | 专注于 Kubernetes 集群的声明式部署 | 通用的 CI/CD 工具,支持多种编程语言和环境 |
GitOps 支持 | 内置支持 GitOps 工作流,Git 是唯一的真理来源 | 需要通过插件或自定义脚本来支持 GitOps 工作流 |
部署自动化 | 自动同步 Kubernetes 资源配置,持续保持集群一致性 | 通过流水线(pipeline)手动配置部署过程 |
可观测性和回滚 | 内置监控和自动回滚功能 | 通过第三方工具或插件实现 |
插件支持 | 提供基础功能,无需大量插件 | 通过插件扩展功能,插件种类丰富 |
CI/CD 整合 | 专注于 CD 部分,通常与 Argo Workflows 等其他工具整合使用 | 既支持 CI 又支持 CD,整合度较高 |