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



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

相关内容

  • 没有找到相关文章

最新更新