【问题标题】:Set Volume Permissions in Multi-Tenant Kubernetes Cluster在多租户 Kubernetes 集群中设置卷权限
【发布时间】:2019-06-20 22:11:53
【问题描述】:

情况:
- 用户 A、B、C、D
- 团队 1:用户 A,用户 B
- 团队 2:用户 C,用户 D

期望:
- 每个用户都有私人音量
- 每个团队都有一个共享卷 --> 团队中的用户可以看到共享卷
- 一些用户,基于权限,可以看到两个共享卷

现在搜索了很长时间,在文档中没有看到解决方案。

想法:
- 使用命名空间!问题 --> 无法再看到其他命名空间的共享卷

【问题讨论】:

    标签: kubernetes kubernetes-helm jupyterhub kubernetes-pvc


    【解决方案1】:

    这是您将如何做的一个例子。您可以为不同的团队使用命名空间。

    然后您可以为每个卷使用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 共享。您可以为私有卷创建单独的角色。

    【讨论】:

    • 感谢您的快速响应。这看起来很干净。问题:这如何考虑规范以查看 另一个 团队的音量,即默认团队音量仅供团队成员访问,但允许白名单成员。据我了解,一旦进入一个 Namespace,其他 Namespace 中的用户将无法访问这些资源。
    • 只有当你使用Role,但如果你使用ClusterRole,你可以跨命名空间。
    • 嗨@Rico,在这里发布,因为这似乎是官方Microsoft Kubernetes 开发人员在此线程中未解决的问题:github.com/Azure/AKS/issues/525 基本上:尝试创建如上所述的跨节点持久卷,在使用 Azure 作为托管集群云提供商时遇到了一些问题。当以azurefile 的形式请求共享存储时,pvc 会无限期地停留在“待处理”状态。关于这里可能是什么问题的任何想法?任何想法都会受到欢迎!
    • 是的,它需要 Azure 支持,这与他们的 API 以及 K8s Kubernetes 如何与之交互有关。
    • 好的,我们解决了这个问题:显然它们是当前 API 中的一个错误,如果资源名称大于 24 个字符,则不会分配 pvc。 Azure def 最终解决了这个问题。
    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多