本文发布于Cylon的收藏册,转载请著名原文链接~
Argo组件
- API Server
- Repository Server
- Application Controller
API Server:一个 gRPC/REST 服务器,提供了 “Web UI”、“CLI” 和 “CI/CD” 使用的 API
- 应用管理和状态报告
- 调用应用操作(例如同步、回滚、用户定义的操作)
- 存储库和 Cluster credential 管理(作为 kubernetes secret 存储)
- 为外部提供身份认证和代理授权功能
- RBAC 试试
- Git webhook 事件的 listener/forwarder
Repository Server:内部服务,用于维护 git 中的应用清单 (manifests) 的本地缓存。负责接收生成和返回 kubernetes 清单
- 仓库URL
- revision (commit, tag, branch)
- APP PATH
- 模板特定的参数
Application Controller:Kubernetes controller,主要做的工作是持续监控运行的 Application,并于当前实时状态和目标所需状态进行对比(与 Kubernetes Controller 功能是相同的),并且不仅仅是 KC 还会和存储库中指定目标状态进行比较,检测到 OutOfSync
状态将进行纠正。
Argo 架构
Argo CD 时最常见的三种架构:单实例方案, 集群级方案,以及折衷方案 (compromise between the two)。
单实例方案
单实例 (One instance) 是指 “通过一个实例 (Argo) 来管理多个集群”,这是一种比较流行的方式,这种方式最大的特点是在用户角度看,是用户对 Application 有单一的视图层。单一的 “视图层” 为用户简化了 API 的集成与 CLI 的登录的配置与体验;为管理员提供了一个统一配置,如 “密钥”, “CRD” 等。
单实例方案的优缺点如下:
- 跨所有集群的单一视图层。
- 统一控制平面,简化安装和维护。
- 单实例可轻松集成 API/CLI。
缺点:
- 单点故障。
- 扩展需要调整各个组件。
- 需要一个单独的“管理”集群 (Kubernetes)。
- 所有集群的 “集群凭证” (kubeconfig) 存储在单集群上,掌握了管理集群或Argo实例,等于可以直接访问所有集群
- 单独的 Application Controller 去管理所有集群的资源,AC 压力较大
- Argo CD 和集群之间存在大量网络流量。
集群级别方案
集群级别方案 (separation instance for cluster) 是指将 Argo 分到每一个集群内,这样可以简化安全与控制难度;为什么说这种方式相对安全,因为在这种模式下, Argo CD 在集群内运行,这意味着不需要将集群 API 暴露给外部控制平面。另外也没有任何中心化实例包含了所有集群的凭证 (kubeconfig),这种模式下就将 “安全域” 限制为 Argo CD 所在集群,而不是共享(中心化)。
集群级方案的优缺点如下:
- 每个集群一个 Argo CD workload
- 不需要外部访问,消除 Argo CD 离开集群的流量
- 一个集群中断不会引起其他集群的正常工作
- 集群安全凭证仅限制该集群自己
- 减少了网络流量的成本(集群内使用内外,跨集群可能需要公网流量)
- 安全域与故障半径得到控制
缺点:
- 维护成本增加,需要维护不同配置的多个实例,或相同配置的多个实例
- 集群规模不同,Argo 实例也不同
- API/CLI 需要分别绑定集群
- 在计算资源的总成本相对增加
折衷方案 - 根据逻辑组划分
这个方案是根据 “单实例” 与 “SIC” 两个方案的优缺点进行折衷的一种方式,是将多个 Kubernetes 集群按照 “逻辑组” 划分,分组可以按团队, 区域或环境进行。只要是对你有意义的。此架构非常有用。它消除了维护过多 Argo CD 的成文。对于实例管理的所有集群来说,RBAC, AppProject 和其他配置可能是相似的。因此,与为每个集群运行一个实例相比,减少了配置重复。
折衷方案的优缺点如下:
- 按组分配 Argo 负载
- 一个集群的中断不会影响其他分组
- 可以控制对外网络流量,进一步缩小了凭证等信息的安全域,以及限制了问题半径
- 减少配置
缺点:
- 有相对的维护成本
- 也需要单独的“管理集群”
Reference
[1] A Comprehensive Overview of Argo CD Architectures – 2023
[2] How many do you need? - Argo CD Architectures Explained
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2023/10/ch01-argo-beginning/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。