在多租户 Kubernetes 集群中设置卷权限

Set Volume Permissions in Multi-Tenant Kubernetes Cluster

情况:
- 用户 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 共享。您可以为私有卷创建单独的角色。