一个计算机技术爱好者与学习者

0%

KubeSphere中的多租户管理

1. Kubernetes 多租户面临的挑战

使用 Kubernetes 的过程中,企业和个人用户在资源共享和安全性方面均面临着诸多挑战。首当其冲的就是企业环境中多租户形态该如何定义,租户的安全边界该如何划分。

多租户是一种常见的软件架构,简单概括就是在多用户环境下实现资源共享,并保证各用户间数据的隔离性。

多租户要解决两大问题:逻辑层面的资源隔离;物理资源的隔离。

逻辑层面的资源隔离主要包括 API 的访问控制,针对用户的权限控制。Kubernetes 中的 RBAC 和命名空间 (namespace) 提供了基本的逻辑隔离能力,但在大部分企业环境中并不适用。企业中的租户往往需要跨多个命名空间甚至是多个集群进行资源管理。除此之外,针对用户的行为审计、租户隔离的日志、事件查询也是不可或缺的能力。

物理资源的隔离主要包括节点、网络的隔离,当然也包括容器运行时安全。您可以通过 NetworkPolicy 对网络进行划分,通过 PodSecurityPolicy 限制容器的行为,Kata Containers 也提供了更安全的容器运行时。

为了解决上述问题,KubeSphere 提供了基于 Kubernetes 的多租户管理方案。

参考文档:

2. KubeSphere 中的多租户简介


在 KubeSphere 中企业空间是最小的租户单元,企业空间提供了跨集群、跨项目(即 Kubernetes 中的命名空间)共享资源的能力。企业空间中的成员可以在授权集群中创建项目,并通过邀请授权的方式参与项目协同。

用户是 KubeSphere 的帐户实例,可以被设置为平台层面的管理员参与集群的管理,也可以被添加到企业空间中参与项目协同。

多级的权限控制和资源配额限制是 KubeSphere 中资源隔离的基础,奠定了多租户最基本的形态。

3. KubeSphere 中的逻辑隔离

与 Kubernetes 相同,KubeSphere 通过 RBAC 对用户的权限加以控制,实现逻辑层面的资源隔离。

KubeSphere 中的权限控制分为平台、企业空间、项目三个层级,通过角色来控制用户在不同层级的资源访问权限。

  • 平台角色:主要控制用户对平台资源的访问权限,如集群的管理、企业空间的管理、平台用户的管理等。
  • 企业空间角色:主要控制企业空间成员在企业空间下的资源访问权限,如企业空间下项目、DevOps 项目的管理等。
  • 项目角色:主要控制项目下资源的访问权限,如工作负载的管理、流水线的管理等。

4. KubeSphere 中的物理隔离

  • KubeSphere 中可以针对企业空间和项目设置网络隔离策略
  • KubeSphere 提供了针对用户的操作审计
  • KubeSphere 完整的认证鉴权链路如下图所示,可以通过 OPA 拓展 Kubernetes 的 RBAC 规则。

5. KubeSphere 多租户配置实践

5.1. 明确概念

  • 集群:K8S集群。
  • 企业空间:业务管理基本单元。
  • 公司部门:公司内部的部门和KubeSphere部门没有必然联系。
  • KubeSphere部门:企业空间中权限划分的单位,每个企业空间包含多个KubeSphere部门,每个KubeSphere部门包含多个用户,方便批量授权。
  • KubeSphere用户:每个公司成员,对应一个KubeSphere用户,一个KubeSphere用户可以属于多个KubeSphere部门。
  • 项目:项目对应k8s中的namespace,一个项目可以同时分配给不同的KubeSphere部门。

集群和企业空间,是多对多的关系。一个企业空间可以包含多个集群,一个集群可以被多个企业空间包含。

KubeSphere中每个项目只能添加到一个企业空间,因此企业空间按照业务来划分,作为业务管理的基本单位。

企业空间作为操作kubesphere的唯一入口,在企业空间授权一个项目的管理权限后,如果用户通过集群管理找到一个项目,是没有权限的。

每个企业空间,建议设置1-3个管理员。管理员负责本企业空间的具体权限管理,例如添加管理员、新建部门、给新成员授权等

KubeSphere部门划分的目的,是为了项目的权限管理,因此需要先对集群和项目权限进行规划。
通过KubeSphere部门,授权可以精确到每个项目和每个人。

5.2. 多租户管理操作流程

1、创建企业空间,并关联集群

2、添加现有项目到企业空间

3、创建部门,针对部门精细化授权

4、添加用户到部门

5、入口都使用企业空间,不要使用集群管理