我正在寻找具有serviceaccount(不是集群管理员)的选项,以便能够创建新的名称空间并自动获得对它的管理员权限(而所有系统名称空间均不能通过该serviceaccount进行编辑)。
当前我绑定到clusterrole的服务帐户包含
- apiGroups:
- ""
resources:
- namespaces
verbs:
- create
但是,它不能对它创建的名称空间执行任何操作。 希望获得任何建议。
答案 0 :(得分:0)
不幸的是,仅使用RBAC objects是不可能的。
在RBAC API中,一个角色包含代表一组规则的规则 权限。许可纯粹是相加的(没有“拒绝” 规则)。
但是有可能的解决方法:
您可以在群集级别上使用带有create-Roles + RoleBindings-permissions的服务帐户,在其中添加带有Kubernetes python / go / java客户端的Pod
然后您运行一个简单的代码,监视api-server中的新名称空间,并在新名称空间中为{-{1}}创建名称空间-admin
此RoleBinding
是指cluster-admin角色,它为用户提供了特定命名空间中的所有权限
要将新名称空间与现有名称空间区分开,脚本还可以在名称空间上放置标签:RoleBinding
或类似名称。
此外,您可以考虑使用RBAC管理器。 Dynamic Namespaces and Labels更具体。
RBAC定义现在可以包含namespaceSelectors代替 指定角色绑定配置时的名称空间属性。这个 在使用动态预配置时可能会非常有用 命名空间。
请让我知道是否有帮助。