限制允许通过ArgoCD部署的kubernetes类型

问题描述

我们希望允许我们的开发人员通过将他们的代码和k8s资源合并到一个git repo中来将其更改自动部署到kubernetes集群,该仓库由ArgoCD监视。版本管理团队将负责管理ArgoCD配置和设置新应用,以及在集群上创建名称空间,角色和角色绑定,而开发人员应该能够通过GitOps部署其应用,而无需与直接集群。开发人员可能出于调试目的对群集具有读取访问权限。 现在的问题是:从理论上讲,开发人员可能会创建一个新的Yaml并指定一个角色绑定资源,该资源会将他/她的帐户绑定到集群管理员角色。由于ArgoCD具有群集管理员权限,因此这将是为开发人员提升特权的一种方式。 (或冒充开发人员的攻击者) 有没有一种方法可以限制通过ArgoCD创建哪些k8s资源。

编辑: 根据{{​​3}},使用clusterResourceWhitelist的每个项目都可以做到这一点。 可以在全球范围内这样做吗?

解决方法

您对Argo CD项目是正确的。项目CRD支持使用clusterResourceWhitelistclusterResourceBlacklist等字段来允许/拒绝K8S资源。 Argo CD documentation中也提供了示例项目定义。

为了全局限制受管资源列表,可以在resource.exclusions ConfigMap中指定resource.inclusions / argocd-cm字段。该示例可用here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...