1.项目概述
开发应用系统自动化部署能力,集成代码仓库、制品仓库、持续集成、代码检测、自动化测试、镜像构建等主流DevOps工具链,实现应用软件面向多种环境的自动化部署和运维,使软件的构建、测试和发布变得更加快捷、频繁和可靠。
2.系统架构
2.1 总体架构-应用架构
产品发布自动化软件提供代码构建、规范检查、单元测试、镜像打包、快速部署、灰度发布等持续交付工具链,使开发者专注业务的开发和测试无需关注运行环境和运维,加速应用的快速迭代和上线。
3.技术架构
3.1 系统总体架构图
产品发布自动化软件是通过简单配置,自动部署测试环境容器化确保与开发环境一致,自动部署生产环境滚动升级、减少错误、实现运维自动化。
3.2 关键组件
3.2.1 Jenkins
Jenkins是一款开源 CI&CD 软件,是基于Java开发的一种持续集成工具,用于自动化各种任务,包括构建、测试和部署软件;支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
3.2.2 Maven
Maven是Apache的开源项目,是一个项目管理和综合工具,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
3.2.3 Node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。
3.2.4 Harbor
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
3.2.5 Docker
Docker 是一个开源,轻量级的应用容器引擎,基于GO语言开发,用于创建、管理和编排容器。与VMware 虚拟机相比,Docker 使用容器承载应用程序,而不使用操作系统,所以它的开销很少,性能很高。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
3.2.6 Kubernetes
Kubernetes,简称K8s,是Google开源的一款容器编排工具,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:1) 使用Docker对应用程序包装、实例化、运行。2) 以集群的方式运行、管理跨机器的容器。3) 解决Docker跨机器容器之间的通讯问题。4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
4.系统功能
4.1 镜像管理模块
4.1.1 原型设计
(1)镜像列表
镜像列表展示当前用户下所有已构建的镜像,功能区包括删除镜像等基本功能;可根据镜像名称进行搜索。
4.1.2 接口描述
4.1.2.1 Harbor获取镜像列表接口
- 用处:用于显示镜像列表
- 参数:project_id,q,page,page_size,sort,label_id
- 输出结果:镜像列表json
- 依赖组件:http-client
- URL:/api/repositories?project_id=1&q=tomcat&sort=creation_time&label_id=11&page=1&page_size=10, 方式GET
4.1.2.2 Harbor删除镜像接口
- 用处:用于删除选择的镜像
- 参数:name
- 输出结果:操作成功or操作失败
- 依赖组件:http-client
- URL:/api/repositories/11, 方式DELETE
4.1.2.3 Harbor查询镜像标签接口
- 用处:用于查询镜像的标签
- 参数:标签名称
- 输出结果:标签列表json
- 依赖组件:http-client
- URL:/api/repositories/${name}/labels,方式GET
4.2 应用编排管理
4.2.1 原型设计
(1)应用编排列表
应用编排列表展示开发者编排的应用,功能区包括新增、编辑、删除、编排、发布等基本功能;可根据应用名称进行搜索。
(2)编排
应用编排服务列表展示应用下的多个服务,功能区包括新增服务、编排服务内容、删除服务、保存服务等基本功能。
(3)发布
应用发布主要输入应用版本和公开方式。
4.3 应用市场管理
4.3.1 原型设计
(1)市场应用列表
市场应用列表展示已经发布的应用信息,功能区包括删除、运行等基本功能;可根据应用名称进行搜索。
(2)运行
运行需要输入启动名称和选择命名空间。
4.4 应用实例管理
4.4.1 原型设计
(1)应用实例列表
应用实例列表展示已经运行的应用实例,功能区包括概况、停止等基本功能;可根据应用名称进行搜索。
(2)概况
概况展示应用运行所有信息,可以修改伸缩和端口等信息。
4.5 配置字典
4.5.1 原型设计
(1)配置字典列表
配置字典列表展示字典信息,包括名称、创建人和创建时间;支持添加、复制、编辑、删除功能;支持根据名称进行搜索。
配置字典中可以配置数据的键值对,在应用编排时提供配置信息或者生成配置文件。
4.6 节点管理
4.6.1 原型设计
(1)节点列表
节点管理列表显示了节点基本信息,包括节点类型和状态、节点IP,操作系统及内核信息、CPU和内存的使用量。
进入节点详情页后,列出来CPU、Memory、FileSystem的使用情况,更详细的系统信息。
4.7 事件管理
4.7.1 原型设计
(1)事件列表
事件列表展示了系统事件的信息,包括事件来源、子对象、资源类型和资源名称、事件类型、事件总数、事件原因和事件信息。
4.8 监控管理
4.8.1 原型设计
(1)监控管理页面
监控管理页面展示了系统硬件的总体使用情况,也监控了每个POD处理器、内存和网络的使用情况
4.9 报警模板管理
4.8.1 原型设计
(1)报警模板列表
报警模板列表展示报警模板的信息,包括报警名称、监控项、报警级别、报警阈值、持续时间和报警;支持添加、编辑、删除功能;支持根据名称进行搜索和高级搜索。