1 - 用户管理

本文档介绍了如何在 KubeCube 上创建、管理用户。

准备工作

使用平台管理员账号登录 KubeCube。

新增用户

1、使用平台管理员账号登录 KubeCube 后,展开【组织管理】菜单,点击【用户管理】,进入用户管理页面。

user-manage

2、点击【新增用户】,填写用户信息。

user-add

  • 登录账号:
    • 不能超过253个字符;
    • 只能包含小写字母、数字,以及'-' 和 ‘.';
    • 须以字母数字开头;
    • 须以字母数字结尾;
    • 全局唯一标识,不允许重复,不允许修改。
  • 用户名:
    • 平台内展示的用户名,默认为登录账号。
  • 密码:
    • 长度不得少于8位且不大于20位;
    • 至少应包括字母、数字以及特殊符号中两类。
  • 电话:
    • 符合中国手机号规范,如188****1234;
    • 选填。
  • Email:
    • 符合日常邮件地址规范;
    • 选填。

点击【确定】,即创建该用户。

3、如果需要批量创建用户,可以点击【批量导入】-【下载模版】,填写表格内容后上传文件,即可批量创建表格内填写的用户。表格填写规范同上。

user-import

用户管理

使用平台管理员账号登录 KubeCube 后,展开【组织管理】菜单,点击【用户管理】,进入用户管理页面。

user-manage

在用户管理页面,可以看到平台内的所有用户,包括每个用户的登录账号、用户名、类型、状态、上次登录IP以及上次登录时间。

  • 类型:用户的登录方式,如果是使用账号密码登录,则类型为 “normal”;如果为其他登录方式,如LDAP、Github等通过第三方平台认证登录,则类型为对应的第三方平台名称。目前 KubeCube 只支持密码登录方式。
  • 状态:分为启用和禁用,启用状态用户可正常登录,禁用状态用户不可登录。

同时,平台管理员可以在该界面修改用户信息,包括用户密码、用户名、电话以及 Email,规范同上。用户登录账号不支持修改。

2 - 租户管理

本文档介绍了如何在 KubeCube 上进行租户管理,并管理租户下的项目和成员。

准备工作

使用平台管理员或租户管理员账号登录 KubeCube。

租户管理

新增租户

1、使用平台管理员账号登录 KubeCube,展开【组织管理】菜单,点击【租户管理】,进入租户管理页面。

2、点击【新增租户】,填写租户信息。

tenant-manage

  • 租户名称:平台内展示的租户名。
  • 租户标识:
    • 长度不得少于2位且不大于32位;
    • 只能包含小写字母、数字,以及中划线 ‘-’ ;
    • 全局唯一标识,不允许重复,不允许修改。

租户管理

使用平台管理员账号登录 KubeCube,展开【组织管理】菜单,点击【租户管理】,进入租户管理页面,可以查看到平台下所有的租户;使用租户管理员账号登录,进入租户管理页面,可以查看到该租户管理员所管理的所有租户。

同时可以在该界面快捷添加成员、添加项目、修改租户名称。

tenant-manage

项目管理

在租户管理页面点击上方的【项目】,切换到项目管理页面。

project-manage

点击【新增项目】,即可添加项目:

  • 所属租户:选择权限内的已有租户;
  • 项目名称:项目的展示名称;
  • 项目标识:
    • 长度不得少于2位且不大于32位;
    • 只能包含小写字母、数字,以及中划线 ‘-’ ;
    • 全局唯一标识,不允许重复,不允许修改。
  • 项目描述:对该项目的描述性语言。

添加项目成功后,也可以在该页面直接为该项目或其他项目添加项目成员。

成员管理

在租户管理页面点击上方的到【成员】,切换到成员管理页面。

member-manage

点击【添加成员】,即可为指定的租户或项目添加成员。

  • 所属租户:选择权限内的租户;
  • 所属项目:选择所选租户下的项目,如果选择【不指定】,则为添加租户成员,否则为项目成员;
  • 账号:选择平台内的用户;
  • 角色:指定所选用户的角色,如果【所属项目】选择【不指定】,则角色可设置为租户管理员或普通成员;如果【所属项目】选择具体项目,则角色可设置为项目管理员或普通成员。

添加成员成功后,可以在该页面进行租户成员和项目成员的管理。同时可以在右上方,根据租户、项目、角色对成员进行过滤和搜索。

3 - 角色管理

KubeCube 的角色管理基于 Kubernetes 的 RBAC 实现,对多集群提供了统一的认证鉴权功能

内置角色

KubeCube 针对不同的层级,内置了相应的管理员角色和只有读权限的 reviewer 角色

权限\角色platform-admintenant-adminproject-adminreviewer
集群管理✓
角色管理✓
角色查看✓✓✓
用户管理✓
节点管理✓
所有租户管理✓
所有租户成员管理✓
本租户管理✓✓
本租户成员管理✓✓
所有项目管理✓
所有项目成员管理✓
租户下项目管理✓✓
租户下项目成员管理✓✓
本项目管理✓✓✓
本项目成员管理✓✓✓
管理 namespace✓
管理工作负载✓✓✓
管理卷✓✓✓
管理 service✓✓✓
管理 ingress✓✓✓
管理 secrets✓✓✓
管理 serviceaccout✓✓✓
管理 subnamespaceanchor✓✓✓
查看工作负载✓✓✓✓
查看卷✓✓✓✓
查看 service✓✓✓✓
查看 ingress✓✓✓✓
查看 secrets✓✓✓✓
查看 serviceaccout✓✓✓✓
查看 subnamespaceanchor✓✓✓✓

KubeCube 使用 HNC 来实现 tenant、project 和 namespace 的层级,以及彼此之间的隔离;为了实现 namespace 层级的隔离,除 platform-admin 外所有角色,通过 subnamespaceanchor 资源来管理 namespace

管理角色

通过角色标签栏来选择角色层级,点击【添加角色】来新建自定义角色,【继承已有】会以本层级的 admin 角色为模版新建出角色,【自定义】可以自定义编辑新角色

add-role.png

通过勾选具体的权限项来自定义角色的权限,点击【修改】提交修改

mgr-role.png

4 - 配额管理

KubeCube 在 Kubernetes 原生的资源配额能力上进行了拓展,在租户层级即可对资源配额进行限制,在使用体验上与 Kubernetes 原生的 ResouceQuota 保持一致

KubeCube 目前支持对 nvidia gpu 进行资源配额

资源配额结构

resourcequota.png

资源配额的计算结构遵循以下约束:

  1. 租户下 namespace 的资源配额总和 < 租户配额
  2. 集群下租户的资源配额总和 < 集群的物理资源

CubeResourceQuota 是 KubeCube 对于 namespace 级别的 ResourceQuota 的上层抽象,基于 CRD 实现

Tenant 资源配额

前置要求

创建一个租户

设置租户的资源配额

选择租户,点击【调整配额】对指定集群下的租户进行资源配额的设置

tenant-quota.png

在可填框中填入期望设置的资源配额,点击【确定】保存配额设置

  • 【集群可分配】表示该集群剩余可分配资源
  • 【租户已分配】表示该租户下所有 namespace 已分配的资源总和

modify-tenant-quota.png

创建 Namespace 并设置资源配额

前置要求

创建一个租户,在租户下创建项目

设置 namespace 的资源配额

点击右上方【租户】选择框,选择租户,点击【创建空间】创建新的 namespace 并设置资源配额,也可以点击【修改】对已创建的 namespace 的资源配额进行修改

ns-quota.png

创建 namespace 时,需要选择空间所属的集群、租户、项目,namespace 一旦创建,其所属关系不能更改。在可填框中填入期望的资源配额,点击【确定】使资源配额生效

【租户可分配】表示该 namespace 所属的租户所剩的可分配资源配额

modify-ns-quota.png

5 - K8s集群管理

5.1 - 多集群管理

KubeCube 提供多集群管理的能力,可以基于管控集群添加或者删除集群,并对所有接管的集群提供统一的认证和鉴权入口

⚠️ 计算集群信息不允许修改,若有修改需求,请先删除计算集群再重新添加,该操作存在的一定风险,删除计算集群期间,计算集群所有资源不受管控集群管控,认证和鉴权功能暂时关闭,直到该集群被重新添加

查看集群信息

选择集群查看对应的基本信息,Node、StorageClass、NetworkPolicy 以及 PV

cluster-inspect

添加计算集群

部署新集群并添加

纳管已有集群

删除计算集群

点击【删除配置】来删除计算集群,管控集群无法通过 Console 删除。删除计算集群意味着 KubeCube 控制面不再接管该集群,该集群恢复被接管前的样子,集群上运行的工作负载、服务等不会受到影响,可以通过添加该集群来重新接管

cluster-manager

5.2 - 集群级资源管理

5.2.1 - 存储类别(StorageClass)

KubeCube 提供对 k8s StorageClass 资源的原生管理能力

查看 StorageClass

点击【集群管理】,选择需要查看的集群,点击【存储类别】,查看该集群中所有的 StorageClass,可以在右上角搜索栏中输入资源名称进行模糊匹配,点击【删除】可删除此 StorageClass

view-storageclass

创建 StorageClass

点击【创建存储类别】来创建新的 StorageClass

create-storageclass

5.2.2 - 存储声明(PV)

PersistentVolume 应该由集群管理员事先提供,KubeCube 对其拥有查看和删除的能力

查看 PersistentVolume

点击【集群管理】,选择需要查看的集群,点击【持久存储】来查看 PersistentVolume 详情,点击【删除】可以删除该资源

pv

pv-view

5.2.3 - 集群节点(Node)

KubeCube 支持集群管理员通过 Console 页面管理各集群的 Node,也支持集群管理员直接使用黑屏操作对 各集群 Node 进行管理

查看节点信息

点击 Node 名称来查看节点的具体信息,点击【更多】查看 Node 的所有标签,

node-info

添加节点

KubeCube 支持集群管理员通过黑屏操作来自行添加节点,也可以点击【添加节点】来使用 KubeCube 的脚本来进行节点添加

// todo:确认 master 和 node 节点的添加细节

add-node

节点操作

点击【编辑标签】来对节点的标签进行编辑

edit-labels

点击【禁止调度】来限制 pod 调度到该节点

no-schedual

点击【更多】来对节点进行更多高级操作,包括:设置节点类型、设置污点、平滑迁移等

edit-node

5.2.4 - 网络策略(NetworkPolicy)

NetworkPolicy 依赖 CNI 实现,创建一个 NetworkPolicy 资源对象而没有控制器来使它生效的话,是没有任何作用的,KubeCube 默认使用 calico

查看 NetworkPolicy

点击【集群管理】,选择要操作的集群,点击【网络策略】,点击【查看详情】可以查看 NetworkPolicy 的详细描述,点击【设置】可以对 NetworkPolicy 进行修改,点击【删除】可以删除该资源

view-networkpolicy

创建 NetworkPolicy

点击【创建网络策略】可以创建新的 NetworkPolicy

create-networkpolicy

6 - 操作审计

本文档介绍了如何在 KubeCube 上查询和导出操作审计日志。

准备工作

使用平台管理员账号登录 KubeCube。

开启操作审计

部署好 KubeCube 后,操作审计功能默认开启。如果需要关闭或开启操作审计功能:

1、使用平台管理员账号登录 KubeCube;

2、点击页面右上角【切换到控制台】,点击任意空间,进入到控制台页面;

3、在左侧菜单栏点击【自定义资源CRD】,进入到集群级别 CRD 列表,可以点击右上方输入 “hotplug” 进行搜索,找到 “hotplugs.hotplug.kubecube.io” CRD,点击【v1】版本进入 CRD 详情页;

4、选择 common 实例,点击【设置YAML】,找到 spec.component.name=audit,将 “status” 改成 “disabled”,即关闭审计功能;改为 “enabled”,为开启审计功能。详细配置说明见 热插拔 。

5、配置 ElasticSearch:

  • 如果需要安装内置 ElasticSearch,修改上述 common 实例,找到 spec.component.name=elasticsearch,将 “status” 改成 “enabled”,在集群内安装 ElasticSearch。

  • 如果需要连接外部 ElasticSearch,需要修改审计服务的deployment的环境变量:

    1. kubectl edit deploy audit -n kubecube-system

    2. 添加环境变量:AUDIT_WEBHOOK_HOST、AUDIT_WEBHOOK_INDEX、AUDIT_WEBHOOK_TYPE,如

      env:
      - name: AUDIT_WEBHOOK_HOST
        value: http://elasticsearch-master.elasticsearch:9200
      - name: AUDIT_WEBHOOK_INDEX
        value: audit
      - name: AUDIT_WEBHOOK_TYPE
        value: logs
      
  • 如果同时配置了内部和外部 ElasticSearch,优先将审计日志发到外部 ElasticSearch。

查询审计日志

使用平台管理员账号登录 KubeCube 后,展开【管控运维】菜单,点击【操作审计】,进入操作审计页面。

audit-manage

如图所示,在该页面展示出了所有的审计日志,包括审计操作者的账号、操作的时间、IP地址、事件名称、资源、状态。同时平台管理员也可以根据账号、IP地址等进行过滤查询。

导出审计日志

在操作审计页面,对审计日志查询后,点击【导出】,即可对查询结果进行导出。导出文件格式为csv,导出的日志条数默认不超过10000条。