尝试编写我的第一组RBAC角色。因此,尝试找出对多个命名空间组件具有2个角色的最佳方法。
Admin-role(用于3个名称空间的RW表示默认值,ns1和ns2) 用户角色(3个名称空间为只读,默认为ns1和ns2)
正在考虑需要一个具有2个clusterRoles的服务帐户,用于管理员/用户
apiVersion: rbac.authorization.k8s.io/v1
kind: ServiceAccount
metadata:
name: sa
namespace: default
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: admin-master
rules:
- apiGroups:
- batch
resources:
- pods
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: user-master
rules:
- apiGroups:
- batch
resources:
- pods
verbs:
- get
- list
- watch
然后利用roleBindings:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: admin-rw
namespace: ns1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admin-master
subjects:
- kind: ServiceAccount
name: sa
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: user-readonly
namespace: ns1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: user-master
subjects:
- kind: ServiceAccount
name: sa
namespace: default
但是不确定如何将角色admin-rw / user-readonly与名称空间2(ns2)绑定的最佳方法吗?
答案 0 :(得分:1)
角色是作用域的,可以绑定到特定的名称空间,也可以绑定到整个群集。对于命名空间范围的角色,you can just simply deploy the same role in multiple namespaces。
其背后的想法是在群集中具有分区权限,尽管it implies more administrative effort却是更安全的做法。
此外,在您的定义中,您尝试将权限绑定到特定的名称空间,但是,您使用的是cluster-scoped resource的ClusterRole
。如果需要命名空间范围的权限,则可能需要将其更改为Role
。
您可能会发现CNCF article在此问题上很有用。