如何在ArgoCD中实现同步操作的多人审批(复核)机制
ArgoCD实现多人员审批同步机制的方案
核心实现:基于AppProject的审批策略配置
ArgoCD原生支持通过AppProject配置多审批人机制,核心是设置审批人数要求并配合RBAC权限控制,确保只有满足审批数量后才能执行同步。
1. 创建/修改生产环境的AppProject
在argocd命名空间下创建或更新AppProject资源,指定需要2名审批人,并配置对应的权限规则:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: production-project namespace: argocd spec: description: 生产环境项目,要求双人审批同步操作 # 允许的代码源仓库 sourceRepos: - "https://your-production-git-repo.com/*" # 允许部署的目标集群和命名空间 destinations: - namespace: production server: https://kubernetes.default.svc # 允许管理的集群资源类型(按需调整) clusterResourceWhitelist: - group: '*' kind: '*' # 配置审批策略:需要2名不同人员审批 approvalPolicy: requiredApprovalCount: 2 # 定义审批角色:仅允许审批,禁止直接同步 roles: - name: production-approver description: 生产环境应用审批权限 policies: - p, proj:production-project:production-approver, applications, approve, production-project/*, allow - p, proj:production-project:production-approver, applications, sync, production-project/*, deny # 定义同步角色:仅允许同步,无审批权限(可选,实现权限分离) - name: production-syncer description: 生产环境应用同步权限 policies: - p, proj:production-project:production-syncer, applications, sync, production-project/*, allow - p, proj:production-project:production-syncer, applications, approve, production-project/*, deny
2. 分配RBAC用户权限
将需要参与审批的用户添加到production-approver角色中,修改ArgoCD的RBAC配置(通常在argocd-cm ConfigMap的policy.csv字段):
# 配置用户到审批角色 g, user_a@your-domain.com, proj:production-project:production-approver g, user_b@your-domain.com, proj:production-project:production-approver g, user_c@your-domain.com, proj:production-project:production-approver # 配置同步权限用户(可选) g, sync_admin@your-domain.com, proj:production-project:production-syncer
同步前的差异验证与审批流程
- 差异查看:当Git仓库中的配置与集群状态存在差异时,任意具备查看权限的用户可在ArgoCD UI中进入对应应用的
Diff页面,对比变更内容(如资源新增、修改、删除),确认变更的合理性。 - 多人审批:两名不同的审批人登录ArgoCD,进入目标应用页面,点击
Approve按钮完成审批操作。系统会记录审批人信息,直到满足requiredApprovalCount: 2的要求。 - 执行同步:审批完成后,具备
production-syncer角色的用户可执行同步操作;若权限未分离,审批人也可在审批后直接同步(不推荐,建议审批与同步权限分离降低风险)。
可选增强:结合GitPR流程双重校验
为了进一步保障生产环境安全,可将ArgoCD的审批流程与Git仓库的PR审查流程结合:
- 代码变更需先提交PR,经过至少两名开发人员的代码审查并合并后,再触发ArgoCD的差异检测。
- 后续再进入ArgoCD的双人审批流程,实现代码审查+部署审批的双重管控。
内容的提问来源于stack exchange,提问作者sl3dg3
相关产品推荐
相关产品推荐

