>情况:
- 用户A,B,C,D
- 团队 1:用户 A、用户 B
- 团队 2:用户 C、用户 D
期望:
- 每个用户都有专用卷
- 每个团队都有一个共享卷 -->团队中的用户可以查看共享卷
- 某些用户根据权限可以看到两个共享卷
搜索了很长一段时间,在文档中看不到解决方案。
想法:
- 使用命名空间!问题 --> 无法再看到其他命名空间的共享卷
这是您如何做到这一点的示例。可以为不同的团队使用命名空间。
然后,您可以为每个卷使用一个Role
,并相应地分配给用户。(角色是命名空间的)。示例角色是:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: team1
name: volume-access
rules:
- apiGroups: [""]
resources: ["persistentvolume", "persistentvolumeclaims"]
resourceNames: ["my-volume"]
verbs: ["update", "get", "list", "patch", "watch"]
然后,您的绑定将是这样的:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: pv-binding
namespace: team1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: volume-access
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: usera
- apiGroup: rbac.authorization.k8s.io
kind: User
name: userb
以上内容将由用户 A 和用户 B 共享。您可以为专用卷创建单独的角色。