有没有办法创建一个具有完全访问权限的 K8s 集群角色(任何命名空间上的所有资源、动词和 apigroup)但在所有命名空间上都没有命令执行,例如:kubectl delete pods --all-namespaces
或kubectl delete pv --all-namespaces
?
(应该允许在单个命名空间上运行相同的命令,而不是对所有命名空间批量运行)。
如果使用集群角色无法实现这一点,是否有其他方法可以实现?
有没有办法创建一个具有完全访问权限的 K8s 集群角色(任何命名空间上的所有资源、动词和 apigroup)但在所有命名空间上都没有命令执行,例如:kubectl delete pods --all-namespaces
或kubectl delete pv --all-namespaces
?
(应该允许在单个命名空间上运行相同的命令,而不是对所有命名空间批量运行)。
如果使用集群角色无法实现这一点,是否有其他方法可以实现?
如果将 clusterrole 绑定到仅需要的命名空间而不授予受限命名空间的权限怎么办?那不是完整的解决方案,至少用户将无法删除不需要的解决方案。并严格回答您的问题 - 不确定这是可能的。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: testsa
namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: testclusterrole
rules:
- apiGroups: [""]
resources: ["pods","services","namespaces","deployments","jobs"]
verbs: ["get", "watch", "list", "create", "delete", "patch", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: job-master-1
namespace: namespace1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: testclusterrole
subjects:
- kind: ServiceAccount
name: testsa
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: job-master-2
namespace: namespace2
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: job-master
subjects:
- kind: ServiceAccount
name: satestsa namespace: default