限制允许使用 ArgoCD 部署的 kubernetes 类型

Restricting allowed kubernetes types to be deployed with ArgoCD

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

编辑: 根据 docs,每个项目都可以使用 clusterResourceWhitelist。 是否可以在全球范围内这样做?

关于 Argo CD 项目,你是对的。项目 CRD 使用 clusterResourceWhitelistclusterResourceBlacklist 等字段支持 allowing/denying K8S 资源。 Argo CD documentation.

中也提供示例项目定义

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