Argo CD 基础
Argoproj 概述
用于 Kubernetes 运行工作流程、管理集群和正确执行 GitOps 的开源工具。
Argoproj 组成
Argo Workflows
基于Kubernetes平台的原生工作流引擎,支持 DAG和step-based工作流。
Argo Events
Kubernetes上的基于事件的依赖管理器,用于触发Kubernetes中的Argo工作流和其他操作。
Argo CD
Argo CD 是 Kubernetes 的声明式 GitOps 持续交付工具。
Argo Rollouts
Argo Rollouts 是一个 Kubernetes 控制器和一组 CRD,为 Kubernetes 提供高级部署功能,例如蓝绿、金丝雀、金丝雀分析、实验和渐进式交付功能。
ArgoCD 概述
Argo CD 是 Kubernetes 的声明式 GitOps 持续交付工具。
ArgoCD 注意功能
1. 自动将应用程序部署到指定的目标环境
2. 支持多种配置管理/模板工具(Kustomize、Helm、Jsonnet、plain-YAML)
3. 能够管理和部署到多个集群
4. SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
5. 多租户和 RBAC 授权策略
6. 部署/回滚到 Git Repo存储库中提交的任何应用程序配置
7. 应用资源健康状况分析
8. Automated configuration drift detection and visualization
9. 自动或手动将应用程序同步到所需状态
10. Web UI 提供应用程序活动的实时视图
11. 用于自动化和 CI 集成的 CLI
12. Webhook 集成(GitHub、BitBucket、GitLab)
13. 用于自动化的访问令牌
14. PreSync、Sync、PostSync Hooks,支持复杂的应用程序部署(例如蓝/绿和金丝雀升级)
15. 应用程序事件和 API 调用的审核跟踪
16. Prometheus指标
17. 参数覆盖用于覆盖 Git 中的 helm 参数
ArgoCD 架构
ArgoCD 组件架构
ArgoCD 组件依赖关系
ArgoCD 组件层
UI:这是表示层。用户与Argo CD的交互主要通过该层的组件进行。
Application:支持 UI 层组件所需的功能。
Core:Argo CD gitops 的主要功能是由核心层的组件和 Kubernetes 控制器实现的。
Infra:代表 Argo CD 作为其基础设施一部分所依赖的工具。
Webapp
Argo CD 附带强大的 Web 界面,允许管理部署在给定 Kubernetes 集群中的应用程序。
CLI
Argo CD 提供了一个 CLI,用户可以使用它与 Argo CD API 进行交互。 CLI 还可用于自动化和脚本编写。
API Server
API Server是一个 gRPC/REST 服务器,它公开 Web UI、CLI 和 CI/CD 使用的 API 系统。它有以下职责:
1. 应用程序管理和状态报告
2. 调用应用程序操作(例如同步、回滚、用户定义的操作)
3. 管理Repository和Cluster相关的凭据(存储为 K8s secrets)
4. 将身份认证与授权功能委派给外部IdP(identity providers)服务
5. 强制实施RBAC
6. 监听及转发Git Webhook相关的事件等
Repository Server
存储库服务器是一项内部服务,用于维护保存应用程序清单的 Git 存储库的本地缓存。当提供以下输入时,它负责生成并返回 Kubernetes 清单:
1. repository URL
2. revision (commit, tag, branch)
3. application path
4. template specific settings: parameters, helm values.yaml
Application Controller
application controller是一个 Kubernetes 控制器,它持续监视正在运行的应用程序,并将当前的实时状态与所需的目标状态(如存储库中指定的)进行比较。它检测 OutOfSync 应用程序状态并可选择采取纠正措施。它负责为生命周期事件调用任何用户定义的hooks(PreSync、Sync、PostSync)
Redis
Redis负责提供缓存服务。
Kube API
Argo CD 控制器将连接到 Kubernetes API 以运行协调循环。
Git
作为 gitops 工具,Argo CD 要求在 Git 存储库中提供所需的 Kubernetes 资源状态。
这里使用“git”来代表实际的 git 存储库、Helm 存储库或 OCI 工件存储库。
Dex-Server
主要用于提供in-memory Database。
ApplicationSet Controller
ApplicationSet 控制器负责协调ApplicationSet 资源。
参考文档
https://argo-cd.readthedocs.io/en/stable/