KubeSphere 的多租户

多租户简介

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

企业空间是最小的租户单元,企业空间提供了跨集群、跨项目(即 K8S 中的命名空间 namespace)共享资源的能力。企业空间中的成员(用户)可以在授权集群中创建项目

KubeSphere 权限控制的核心是 RBAC 基于角色的访问控制,但是又在 Kubernetes 模仿原生的 RBAC,使用 crds 资源/第三方插件,新增了新的平台角色和平台角色绑定、企业空间角色和企业空间角色绑定(平台角色是全局概念、企业空间是部分)。

多租户元素

资源类型

来源

用户

​users.iam.kubesphere.io​

Kubesphere crds

平台角色

​globalroles.iam.kubesphere.io​

Kubesphere crds

平台角色绑定

​globalrolebindings.iam.kubesphere.io​

Kubesphere crds

企业空间

​workspaces.tenant.kubesphere.io​

Kubesphere crds

​workspacesTemplate.tenant.kubesphere.io​

Kubesphere crds

企业空间角色

​workspaceroles.iam.kubesphere.io​

Kubesphere crds

企业空间角色绑定

​workspacerolebindings.iam.kubesphere.io​

Kubesphere crds

项目

​namespace​

k8s 自带

项目角色

​roles​

k8s 自带

项目角色绑定

​rolebindings​

k8s 自带

用户 Users

用户是 KubeSphere 的帐户实例,是登陆 KubeSphere 控制台的实体账号,在 KubeSphere 中使用 ​​users.iam.kubesphere.io​

用户信息中保存了用户名、密码、最后登陆时间等信息

平台角色 globalroles

在 KubeSphere 中平台角色使用 ​​globalroles.iam.kubesphere.io​​ 资源抽象。安装成功后,会预创建 4 个内置的平台角色,每个平台角色实际又关联着一个或多个平台模板角色(平台角色的权限是关联模板角色权限的集合)。

内置角色

描述

workspaces-manager

企业空间管理员,管理平台所有企业空间。

users-manager

用户管理员,管理平台所有用户。

platform-regular

平台普通用户,在被邀请加入企业空间或集群之前没有任何资源操作权限。

platform-admin

平台管理员,可以管理平台内的所有资源。

以 users-manager 角色为例子,其关联了 用户查看 | 角色查看 | 用户管理 | 角色管理 四个模板角色,这让 users-manager 角色拥有了这四个角色模板下所对应的资源访问权限。

平台角色绑定 globalrolebindings

创建用户后,需要为用户分配一个平台角色,使用 ​​globalrolebindings.iam.kubesphere.io​​资源来抽象用户和平台角色的绑定关系。

在创建一个新的平台角色时,需要编辑权限,此时就是为新创建的平台角色关联预创建的角色模板

企业空间 WorkSpace

企业空间是 KubeSphere 中用来管理项目、DevOps 项目、应用模板和应用仓库的一种逻辑单元。可以在企业空间中控制资源访问权限,也可以安全地在团队内部分享资源。在 KubeSphere 中使用 ​​workspaces.tenant.kubesphere.io​​​ 和 ​​workspacesTemplate.tenant.kubesphere.io​

企业空间角色 workspaceroles

在 KubeSphere 中企业空间角色使用 ​​workspaceroles.iam.kubesphere.io​

名称

描述

workspace-viewer

企业空间观察员,可以查看企业空间中所有资源。

workspace-self-provisioner

企业空间普通成员,可以查看企业设置、管理应用模板、创建项目和 DevOps 项目。

workspace-regular

企业空间普通成员,可以查看企业空间设置。

workspace-admin

企业空间管理员,可以管理企业空间中的所有资源。

以 system-workspace-viewer 为例子,其关联了 企业空间设置查看 | 角色查看 | 成员查看 | 部门查看 | 项目查看 | DevOps 项目查看 | 应用模板查看 | 应用仓库查看 八个模板角色。

企业空间角色绑定 workspacerolebindings

在企业空间中,可以在企业空间成员处邀请用户加入企业空间,邀请用户加入时,还需要为其分配企业空间角色,使用 ​​workspacerolebindings.iam.kubesphere.io​​ 资源来抽象用户和企业空间角色的绑定关系。

此处以企业空间的默认管理员角色为例(管理员的角色绑定是在创建企业空间时选择管理员时绑定)

项目 NameSpace

KubeSphere 中项目就是 K8S 中的命名空间,使用的就是 NameSpace 资源来抽象项目,企业空间和项目的关系是一对多,即一个企业空间下,可以创建多个项目。K8S 的默认命名空间和 KubeSphere 系统相关的命名空间,都归属于默认企业空间 system-workspace

下面在前面创建的 ​​demo-ws​​ 企业空间下创建一个新的项目 ​​demo-ws-project-01​

项目角色 roles

在 KubeSphere 中项目角色对应的就是 K8S 自带的 ​​roles​​ 资源。但是通过 KubeSphere 创建新项目时,会自动创建 3 个内置的项目角色,每个项目角色实际又关联着一个或多个项目模板角色(项目角色的权限是关联项目模板角色权限的集合)。

内置角色

描述

viewer

项目观察者,可以查看项目下所有的资源。

operator

项目维护者,可以管理项目下除用户和角色之外的资源。

admin

项目管理员,可以对项目下的所有资源执行所有操作。此角色可以完全控制项目下的所有资源。

下图展示的是 ​​demo-ws-project-01​​ 项目下的项目角色,如需查看其他项目下的角色,需要带​​-n​​参数指定项目名(命名空间)

以 viewer 角色为例,关联了如下的项目模板角色

项目角色绑定 rolebindings

在项目下,可以在项目成员处邀请用户加入项目,邀请用户加入时,还需要为其分配项目角色,此时使用的就是 K8S 自带的 ​​rolebindings​​ 资源

以 ​​demo-ws-project-01​​ 项目下绑定关系为例

从下图可以看到,admin 用户绑定了该项目下的 admin 角色

集群 Cluster

集群角色 ClusterRole

在 KubeSphere 的多租户架构中,无法直接管理 ClusterRole,KubeSphere 创建了两个角色 ​​cluster-admin​​​ 和 ​​cluster-viewer​​ 分别用来查看和管理集群资源,用户无法额外再新增ClusterRole,也无法查看和修改现有的 ClusterRole

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐