核心概念
argocd
架构示意图
以下argocd
概念需要具有Git、Docker、Kubernetes、Continuous Delivery
和GitOps
相关背景
Application
(应用): 基于Kubernetes CRD
定义的一组Kubernetes
资源清单- 应用数据源类型: 构建应用的工具类型(
helm
等) - 目标状态: 描述应用的期望状态(如副本数、配额、调度等),由
git
仓库内的应用清单文件描述 - 活动状态: 描述应用的活动状态(如副本数、配额、调度、探针状态等)
- 同步状态: 描述应用活动状态与目标状态同步情况(是否一致)
- 同步: 一个动作,使应用程序(集群内)与目标状态(
git
仓库清单文件描述)达成一致 - 同步操作执行的状态: 描述同步动作是否成功
- 刷新: 对比
git
仓库内的应用目标状态与活动状态,指出不同之处 - 健康状态: 描述应用程序是否运行正常,可以对外提供服务
- 工具: 创建应用程序清单描述文件的工具(如
helm、Kustomize
)
Argo CD
中项目是什么?
项目提供了应用程序的逻辑分组,这在Argo CD
被多个团队使用时非常有用。项目提供以下特性:
- 限制部署的内容(如可
Git
源代码库) - 限制应用部署的位置(目标
k8s
集群和命名空间) - 限制可部署或不可部署的对象类型(例如
RBAC、CRDs、daemonset、NetworkPolicy
等) - 定义项目角色以提供应用程序
RBAC
(绑定到OIDC
组和/或JWT
令牌)
关于默认项目
每个应用程序都属于一个项目。如果未指定,应用程序属于默认项目,该项目是自动创建的,
默认情况下允许从任何源repo
部署到任何集群,以及所有资源类型。
默认业务群组只能被修改,不能被删除。最初创建时,它的规范声明如下:
spec:
sourceRepos:
- '*'
destinations:
- namespace: '*'
server: '*'
clusterResourceWhitelist:
- group: '*'
kind: '*'