基于iTop的Kubernetes工作流

当面向很多用户时,Kubernetes 的使用方式是一个需要考虑的问题。如果直接让用户写 yaml,一方面是要求每个用户都学 Kubernetes,这对研发人员来说是一个不必要的负担,另一方面 yaml 的管理以及权限分配对运维人员来说也是一个不必要的负担,平添很多琐事。因此,使用一个管理系统来屏蔽 Kubernetes 细节,管理权限等,对研发和运维来说都很有用。本文介绍基于 iTop 的 Kubernetes 工作流方案。

概述

iTop 是一个开源的 ITSM 软件,核心功能是 CMDB,另外还包含请求管理,事件管理,变更管理等功能。

利用 iTop 完善的 CMDB 功能管理 Kubernetes 对象,相比于 yaml 定义 Kubernetes 对象,具有以下特点

  • 用户仅需具备基本的 docker 容器经验即可使用 Kubernetes,无需专门学习Kubernetes
  • 资源唯一性校验,保证 app 名称,域名等不会冲突
  • 利用 iTop 的 lnk 类型,直观的实现 nginx 配置,volume 挂载,affinity 等功能,用户可以直接勾选
  • 利用 lifecycle,实现业务更新、下线等操作。并且原生支持批量操作。适合于灾难恢复场景下快速批量上线大量业务
  • 权限控制,用户只能部署自己名下的 APP 相关资源,只能看到自己名下 APPsecret 内容
  • 嵌入 kubernetes dashboard,供用户调试使用

当然,这种方式也存在一定的问题,首先 iTop 插件开发挺麻烦的,另外这种方式导致 Kubernetes 使用上不够灵活,只能以特定的方式使用,不能完全发挥 Kubernetes 的能力。

预览

Deployment 列表

Deployment 列表

Deployment 详情

Deployment 详情页

嵌入 Dashboard

Kubernetes Dashboard

Ingress 列表

Ingress 列表

自定义 Nginx 配置

Ingress 自定义 Nginx 配置

工作原理

  • iTop 对象创建或删除时触发动作执行脚本,脚本中调用 Kubernetes API 应用iTop 中的更新
  • 触发器需要安装插件 ops-itop/itop-extensions/knowitop-trigger-on-update
  • 自定义动作需要安装插件 ops-itop/itop-extensions/action-shell-exec

触发器配置

TriggerOnCreate

"描述","类别","目标类","过滤器"
"Kubernetes对象创建","触发器 (对象创建时)","Kubernetes","SELECT Kubernetes"

TriggerOnObjectUpdate

"描述","类别","目标类","Tracked attributes","过滤器"
"Kubernetes对象更新","Trigger on object update","Kubernetes","","SELECT Kubernetes"

两个触发器均链接以下动作:

"名称","类别","名称","描述","状态","Path","Parameters"
"Kubernetes","Script execution","Kubernetes","Kubernetes对象操作","生产中","/home/wwwroot/default/cmdb/cmdbApi/actions/demo.sh","SCRIPT_NAME=kubernetes.php\nID=$this->id$"

持续集成

镜像如果由人工生成,可能存在疏忽导致的 tag 被覆盖的情况,这对回滚有很大影响。因此镜像制作最好有持续集成方案,由持续集成工具自动生成 tag。推荐使用 Drone CI,参见 基于Drone CI的持续集成方案

相关链接

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注