# 使用说明

# 角色与权限

# K8S集群的角色与权限

K8S集群层级只有管理员一种角色,管理员可以对集群进行所有操作。

# 环境的角色与权限

环境对应于K8S集群下的一个命名空间,在环境层级有两类用户:管理员和普通用户。 只有K8S集群的管理员才具有环境的创建权限。

  • 环境管理员:可以对环境进行管理操作
  • 普通用户: 具有除了对环境进行编辑、资源配额设置和资源限制设置之外的其他操作权限

# 集群管理

点击左侧“K8S部署”菜单,即可进入集群管理界面。 在集群管理界面,可以对K8S集群进行导入。 K8S集群的列表有三个标签页“全部”、“我是管理员”、“我的收藏”,在“我是管理员”标签页下,可以对集群进行编辑。 K8S集群管理

# 集群导入

在使用ezK8S之前,首先要将集群导入。对于支持CNCF标准的Kubernetes集群均可导入。点击上图中右上角的导入按钮,可以导入K8S集群。 导入的方法在界面上有详细说明,其中API Server地址需要使用基础地址。 服务令牌获取方法及步骤: ①创建一个名为 ezone-admin-service-account.yaml的文件,内容如下:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: ezone-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  namespace: kube-system
  name: ezone-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: ezone-admin
    namespace: kube-system

②在需要导入的集群上运行如下命令,创建流水线进行构建任务调度需要的账号ezone-admin

kubectl apply -f ezone-admin-service-account.yaml

如果你当前操作K8S的账号没有创建集群级别账号的权限,你可以启用K8S Basic Authentication认证方式后,使用如下命令以admin身份执行

kubectl apply -f ezone-admin-service-account.yaml --username=admin --password=<password>

如果成功执行,会得到如下输出

serviceaccount "ezone-admin" created
clusterrolebinding "ezone-admin" created

③运行如下命令获取令牌

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ezone-admin | awk '{print $1}')

④复制令牌

Name:         ezone-admin-token-b5zv4
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=ezone-admin
              kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      <authentication_token>

# 集群编辑

在集群管理界面,切换到“我是管理员”标签,即可对有权限的集群进行编辑。编辑模式仅支持对集群名称和备注编辑。

# 环境管理

选择某个Kubernetes集群后,会在左侧出现“环境管理”、“部署管理”、“PV管理”二级菜单。 点击“环境管理”进入环境管理界面。如果想切换到别的Kubernetes集群下进行环境管理,可以在顶部面包屑切换。 环境管理

# 新建

只有集群管理员才有在集群下创建环境的权限。 新建环境时,如果该环境设置为“企业内公用”,则企业成员均有该环境的使用权限。否则只有被添加进来的用户有环境使用权限。

# 编辑

只有环境的管理员才有集群编辑权限,编辑环境时仅能编辑备注和人员。

# 删除

只有环境管理员才能删除环境,环境被删除时,需要先行将Configmap,密文,服务配置,部署实例,域名,证书,pvc清空后或删除。

# 审计

作为企业级应用,ezK8S提供了环境操作审计功能,以查看操作历史。

# 部署管理

点击左侧“部署管理”菜单,即可进入部署管理界面。部署管理界面功能较多,所以引入了三级菜单。可以在顶部面包屑切换不同的Kubernetes集群,在三级菜单顶部切换环境。 部署管理

# 部署模板

进行容器化部署,可以通过部署模板简化操作。将需要的配置项通过模板进行固化后再后续的部署任务中,可以按照模板配置进行自动部署。 点击左侧“部署模板”菜单,可以查看现有部署模板列表,并对现有部署模板进行编辑,新建等操作。

部署模版

部署模板主要包括基本设置、权限设置、容器设置、健康检查和部署模板几个部分。

创建部署模版: 副本数量:是该模板创建部署任务时默认的副本数量,在发起部署任务的时候,可以修改。 服务端口:是容器启动时的默认服务端口。 镜像源:可以选择本平台内置的docker制品库、docker镜像库或者通过“服务集成”配置的第三方docker镜像库。 部署模版 权限设置: 开启部署任务审批后,所有部署任务需要经过环境管理员或者集群管理员审批后方可执行。 容器设置: 容器设置部分是可选设置,点击右上角的“收起/展开”按钮可以展开或者收起编辑区域。 容器设置

健康检查: 同样,健康检查同样是可选的高级设置,健康检查内包括容器存活检查(对应Kubernetes的Liveness配置)和容器就绪检查(对应Kubernetes的Readiness配置)两个检查开关。每种检查又包括TCP端口检查、Http请求检查和执行命令检查三种检查方法。

# 部署任务

创建好部署模板之后,就可以基于部署模板创建部署任务。新建部署任务的入口有两处,可以在部署模板处直接创建基于该模板的部署任务,如下图: 部署任务

# 部署实例

部署实例是部署任务运行成功后生成的运行中的实例。在创建部署任务时,会根据部署模板和时间自动生成实例名称(支持手动修改)。 同一个部署模板可以被部署出多个不同名的部署实例。对于同名部署实例,部署任务会用更新实例的方式进行部署。例如下图中的ezcode和ezcode-200609185608两个部署实例都是由同一个部署模板ezCode及同一个镜像版本0.0.0.2创建。 部署实例

# Pods

点击Pods按钮,右浮界面可以查看Pods的数量及详情。Pods的数量由部署任务中设置的“副本数量”决定,并可在此处支持手动调整Pod数量实现服务弹性伸缩。每个Pod的名称由实例名称加上一串随机数字组成。 部署实例

# Events

Events常用于排查Kubernetes集群错误。此数据非持久化保存,请注意。 部署实例

# ConfigMap

ConfigMap和密文相关操作比较简单,就是简单的添加key和value对。 ConfigMap

# 密文

密文对应Kubernetes集群的Secret概念,和Configmap的操作类似,不重复赘述。

# 服务

服务对应Kubernetes集群的Service概念,pod通过Service向外部提供可访问的服务。 通过本容器部署系统的服务绑定功能,可以将Service和部署实例通过实例名称、标签或者Endpoint等方式绑定。 服务

# 域名

域名的设置中需要注意:如果选择的是https的域名,则需要选择相应的https证书。也即只能选择域名匹配的证书。 域名

# 证书

对于https的服务,需要对应的证书文件。本容器部署系统提供了服务的证书管理功能,并提供了两种证书上传方式。文件上传及文本复制方式。 上传证书时,会检测证书内容的合法性。对于日期是否过期等会做友情提示。

证书证书

# PVC

PVC对应Kubernetes集群的PersistentVolumeClaim概念,创建PVC之前,应该先创建PV,不同类型的PV,需要创建与之对应类型的PVC才能被使用。 pvc

# 弹性伸缩

通过配置HPA(Horizontal Pod Autoscaler)即可实现自动弹性伸缩。 弹性伸缩

# 部署统计

此功能统计各部署模板在指定时间段内的部署情况,考虑到实时计算的性能问题,当日数据需在第二日查看。

部署统计

# PV管理

点击左侧PV管理二级目录,即可进入到PV管理界面。提供PV的新建、刷新、删除及查看功能。因为PV是在远程Kubernetes集群创建,故提供刷新功能以同步状态。 在顶部面包屑导航可以切换查看不同Kubernetes集群下的PV。 环境管理

# 访问模式

Kubernetes中PV的访问模式分为如下三类: ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。 ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。 ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。

# 新建

只有集群管理员能新建PV 新建NFS类型PV时需要注意服务器IP需要是Kubernetes集群可访问的IP

# 删除

只有集群管理员才可以对集群下的PV进行管理,PV属于集群,不属于环境,所以只有集群管理员才可以删除PV

# 查看

点击PV管理界面的查看按钮即可查看PV详情,有集群下任意一个环境的使用权限的用户才有集群PV的查看权限