# simple-deployment **Repository Path**: kuzane/simple-deployment ## Basic Information - **Project Name**: simple-deployment - **Description**: simple-deployment服务发布平台是一套用来快速将企业服务代码快速构建和发布到容器集群中的系统,允许不同环境不同集群的部署,允许不同角色在不同环境具备个性化权限配置,内置服务上线审批流程。 - **Primary Language**: Java - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-07-24 - **Last Updated**: 2024-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Simple Deployment simple-deployment服务发布平台是一套用来快速将企业服务代码快速构建和发布到容器集群中的系统,对接企业内部gitlab代码仓库、jenkins自动构建工具,快速将gitlab中的项目代码发布到公司内部集群或者第三方云集群中。 子项目包含:Spring Boot管理员后端 + Vue管理员前端 + Golang部署后端服务 # 概述 ## 1.部署流程 ![image](http://ztjy-class-record.ztjy61.com/1005620211230135515939pOWCfWbM.jpg) ## 2.特性 * 基于gitlab接口,自动同步项目信息到发布平台中 * 基于jenkins接口,自动创建jenkins构建job进行代码编译和镜像上传 * 内置基本的集群服务状态监控 * 支持部署环境隔离 * 相同的环境也支持多个集群多个命名空间部署 * 支持发布审批流程 * 支持多角色权限配置 * 支持java/go/C++/python等所有类型的http服务的上线 # 部署 ## 1.准备 * Java 1.8+ * Mysql 5.7.0+ * Golang * 下载项目或git clone项目 * Redis 2.6+ ## 2.安装 ## 3.启动 1. 启动deployment-service服务,需安装golang编译环境,默认端口38000 2. 创建数据库,执行database目录下的初始化脚本 3. 修改deployment-admin\deployment-server\src\main\resources\config目录下的application-dev.yml配置,主要配置项如下: - mysql - redis - gitlab(即代码仓库的gitlab地址) - deploy部署服务地址(即第一步启动的deployment-service服务地址) 4. 启动deployment-admin服务(springboot) 5. 启动deployment-admin-front服务(vue) 6. 管理员账号: admin/123456 ## 4.初始配置 1. 配置集群(找到集群的key) ![image](http://ztjy-class-record.ztjy61.com/1005620211231092459274FHZF7kfr.png) 2. 配置jenkins环境 * 需配置jenkins机器具备推送镜像到远程docker仓库的权限,确保jenkins机器能正常执行docker build/docker push命令 ![image](http://ztjy-class-record.ztjy61.com/1005620211231093416636Jgi0C9Ri.png) * 发布平台配置jenkins实例,需要从jenkins机器上生成新的token,并配置到发布平台上,发布平台允许动态添加修改jenkins实例 ![image](http://ztjy-class-record.ztjy61.com/1005620211231094356085SnrmoYwk.png) ![image](http://ztjy-class-record.ztjy61.com/1005620211231094654226yLkATpm2.png) 3. 构建配置 * 为每种项目框架类型执行一台编译的jenkins和docker镜像源推送地址 ![image](http://ztjy-class-record.ztjy61.com/1005620211231094922852CeNg0szT.png) # 使用 ## 1.服务项目配置 ### 1.1 同步代码项目 * 开发人员使用自己的gitlab账号的token做代码同步,每个人员只能部署自己的项目 * 运维人员使用gitlab系统管理员账号的token进行同步,可以部署公司的全部项目 ![image](http://ztjy-class-record.ztjy61.com/1005620211230140735562zzw4EFbF.png) 同步后进入服务管理界面 ![image](http://ztjy-class-record.ztjy61.com/10056202112301413596976JL2WsDO.jpg) ### 1.2 项目配置 * 项目类型选择 ![image](http://ztjy-class-record.ztjy61.com/1005620211230144042608mS4oPqvz.png) * 部署集群及命名空间配置 ![image](http://ztjy-class-record.ztjy61.com/1005620211230144206198o9ToEhRU.png) * 镜像构建配置 ![image](http://ztjy-class-record.ztjy61.com/1005620211230144326902vnuFfk65.png) * 部署参数配置 ![image](http://ztjy-class-record.ztjy61.com/1005620211230144407487QANsWmdv.png) * 环境变量配置 ![image](http://ztjy-class-record.ztjy61.com/1005620211230144454442gALyG9yq.png) 当项目配置完毕后,发布平台自动会从集群中获取该服务的运行状态,如图所示: ![image](http://ztjy-class-record.ztjy61.com/10056202112301447220244h6i9Nkq.png) ## 2.服务项目部署 ### 2.1 选择分支或者tag * 支持按代码分支进行部署,也支持按代码的tag进行部署 ![image](http://ztjy-class-record.ztjy61.com/1005620211230145244884xnhLu4eH.png) ![image](http://ztjy-class-record.ztjy61.com/1005620211230145329384NSfgAclg.png) ### 2.2 点击部署按钮 * 点击部署后,可直接查看镜像构建日志和状态 ![image](http://ztjy-class-record.ztjy61.com/1005620211230145605681dWvcIXYb.png) * 当进入集群部署阶段后,可直接查看集群的启动日志 ![image](http://ztjy-class-record.ztjy61.com/1005620211230145905749384gxGVC.png) ### 2.3 部署结果通知 ![image](http://ztjy-class-record.ztjy61.com/1005620211230150649412QOSa2EFG.png) ### 2.4 部署日志 环境部署日志 ![image](http://ztjy-class-record.ztjy61.com/1005620211230151015428Ip1hCWoG.png) 单个服务部署日志 ![image](http://ztjy-class-record.ztjy61.com/1005620211230151201132l0XfD9rF.png) ## 3.服务项目状态监测 ### 3.1 状态查看 * 可查看当前服务运行时状态 ![image](http://ztjy-class-record.ztjy61.com/1005620211230150209995gr6npcxG.png) ### 3.2 日志查看 * 支持pod日志实时查看 ![image](http://ztjy-class-record.ztjy61.com/1005620211230150415637Fsb0tP5n.png) ### 3.3 pod资源使用情况 ![image](http://ztjy-class-record.ztjy61.com/1005620211230152940835kF69Bmv9.png) ### 3.4 集群资源使用情况 ![image](http://ztjy-class-record.ztjy61.com/1005620211230160644375iGDtf6Dr.png) ### 4.环境 ### 4.1 环境配置 一般企业内部有4套环境 - 联调环境,用于开发人员在开发阶段进行部署和服务验证 - 测试环境,用于测试人员对功能进行测试 - 预发环境,用于上线前对服务进行功能验证,环境通常跟线上配置一样 - 线上环境,最终上线的环境 服务发布平台支持环境灵活配置,因此使用者可以根据现状对环境进行配置,如图所示 ![image](http://ztjy-class-record.ztjy61.com/1005620211230153917825IbveA2MX.png) ### 4.2 角色在环境中的权限 服务发布平台允许不同的角色在不同的环境中权限个性化配置,例如我们允许开发人员在联调环境中可以看到服务状态,也能修改服务配置,而在线上环境中仅仅只能查看服务状态,则配置如下: - 联调环境权限配置(开发角色) ![image](http://ztjy-class-record.ztjy61.com/1005620211230154750881e4FkzZEY.png) - 线上环境权限配置(开发角色) ![image](http://ztjy-class-record.ztjy61.com/1005620211230154843587kQA4HVhU.png) ### 5.审核审批 ### 5.1 发布申请 开发人员申请服务发布,一次申请可添加多个服务 ![image](http://ztjy-class-record.ztjy61.com/1005620211230163915870rHEA4P6w.png) 开发人员申请后,主管接收到申请消息,进行审批,首页今日部署显示部署时间在当天以及之前未完成的申请 ![image](http://ztjy-class-record.ztjy61.com/1005620211230164354761sPkutCdx.png)