ArgoCD有5个基本组件,
$ kubectl get po -n argocd
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 19h
argocd-dex-server-767fb49f59-7rxn7 1/1 Running 0 19h
argocd-redis-65d6b6b4ff-29g6v 1/1 Running 0 19h
argocd-repo-server-67bf4499f-qnjwd 1/1 Running 0 19h
argocd-server-5c47bf87d-2dbbw 1/1 Running 0 19h
1.argocd-server:
提供 ArgoCD 服务的主要组件,是一个 gRPC/REST 服务器,提供 Web UI、CLI 和 CI/CD 系统所需的 API。它通过 API 与客户端通信,并处理来自 Git 存储库的声明性配置。argocd-server 还负责与 Kubernetes API 服务器通信,以将声明的状态与实际状态保持同步。
2. argocd-repo-server:
用于在 ArgoCD 中提供 Git 存储库的服务,负责维护 Git 仓库的本地缓存,其中保存着应用程序清单。它允许 ArgoCD 通过 HTTP 或 HTTPS 访问存储库,并从中读取或生成 Kubernetes 资源的声明性配置。
3. argocd-application-controller:
负责应用资源的状态同步。它是一个 Kubernetes 控制器,持续监视运行中的应用程序,并将当前实际状态与期望的目标状态(在仓库中指定)进行比较。当它检测到不符合预期的应用程序状态,会调用 Kubernetes API 以创建、更新或删除资源,以确保它们与声明的状态保持一致。同时它还负责调用用户定义的钩子以进行生命周期事件(PreSync、Sync、PostSync)的管理。
4. argocd-dex-server:
负责处理用户身份验证和授权。ArgoCD 使用 Dex 进行身份验证,可以集成多种身份提供者(如 GitHub、LDAP 等)。argocd-dex-server 管理用户和团队的身份,并生成用于与 argocd-server 通信的令牌。
5. argocd-redis:
用于缓存和存储 ArgoCD 的状态信息。由于 argocd-server 可能会频繁地与 Kubernetes API 服务器通信,使用缓存可以提高性能并减轻对 API 服务器的负载。
参考文档:
- https://argo-cd.readthedocs.io/en/stable/operator-manual/architecture/