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条。