情况:
- 用户 A、B、C、D
- 团队 1:用户 A、用户 B
- 团队 2:用户 C、用户 D
期望:
- 每个用户都有私有卷
- 每个团队都有一个共享卷 -> 团队中的用户可以看到共享卷
- 根据权限,一些用户可以看到两者共享卷
现在搜索了很长时间,在文档中没有看到解决方案。
想法:
- 使用命名空间!问题 --> 无法再看到其他命名空间的共享卷
情况:
- 用户 A、B、C、D
- 团队 1:用户 A、用户 B
- 团队 2:用户 C、用户 D
期望:
- 每个用户都有私有卷
- 每个团队都有一个共享卷 -> 团队中的用户可以看到共享卷
- 根据权限,一些用户可以看到两者共享卷
现在搜索了很长时间,在文档中没有看到解决方案。
想法:
- 使用命名空间!问题 --> 无法再看到其他命名空间的共享卷
这是您将如何做的一个例子。您可以为不同的团队使用命名空间。
然后,您可以Role
为每个卷使用 a 并相应地分配给用户。(角色是命名空间的)。一个示例角色将是:
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 共享。您可以为私有卷创建单独的角色。