构建部署设计

目录

构建与部署,是日常开发过程中很频繁也很关键的步骤,本文将介绍dapeng部署构建中心两大模块的核心概念。

平台架构

系统分为两个主要部分:

  • 配置中心 配置将服务运行所需要的所有配置项入库, 负责生成运行所需的配置文件(一般为yml), 并指示agent进行系统的发布/回滚等.

  • agent-client(以下简称agent). agent部署在服务节点上, 并接收配置中心的指令并根据指令做具体的操作.

  • 配置管理员在web配置中心进行增删改操作,更新配置
  • 配置管理员确认配置参数无误,进行配置的同步下发(web端表现为升级操作)
    • 配置中心从数据库获取各项配置返回至配置中心
    • 配置中心将配置按照优先级进行整理,基于docker-compose文件模型生成最终配置
    • 在升级前通过指定事件消息将当前已经在运行的配置文件内容返回,与配置中心生成的配置文件进行对比(差异可视)
    • 当文件最终确定后,通过事件消息将配置发送至agent
    • agent接收到事件消息后将文件生成,并执行指定的操作(升级)
  • 升级完成

    主要功能项

  • 持续集成
    • 构建任务
      • 展示构建任务列表
      • 发送构建操作
      • 查看构建历史
      • 删除构建历史
      • 查看当前构建任务
      • 点击历史查看构建日志
  • 发布部署
    • 服务管理
      • 展示服务列表
      • 导入导出服务
      • 服务信息增删改查
    • 环境管理
      • 展示环境集列表
      • 环境集信息增删改查
      • 指定构建主机
      • 管理SetSubEnv
    • 节点管理
      • 展示节点列表
      • 节点信息增删改查
    • 部署单元管理
      • 展示部署单元列表
      • 部署单元增删改查
      • 批量修改tag
      • 批量修改分支
      • 对比配置
    • 上线部署
      • 展示容器信息;容器状态,容器tag
      • 升级,停止,重启,预览配置,移除容器操作
      • 查看agent列表
    • 部署记录
      • 展示部署的操作记录
      • 回滚服务配置
    • 文件管理
      • 管理容器与宿主机卷挂载的文件,一般是内容有限内容的明文配置文件
      • 文件增删改查
      • 关联部署单元,换言之可具体关联某个节点的容器
    • 网络管理
      • 预定义和配置容器网络参数
      • 将配置的网络关联到节点
      • 下发网络配置,在关联节点创建网络

功能主逻辑

服务:微服务架构,将业务细化,每个模块作为一个服务向外提供服务,往往每个模块具体化为一个代码库,而这里的服务就是描述这个镜像最基本的配置

环境集:一个环境集合,例如测试环境中的某个sandbox环境,生产的统一集群环境。环境集中包含一个环境集中服务高度共享的environment信息

SetSubEnv:环境集内描述某个服务在某个节点的environment信息

节点:节点从属于环境,一个环境集下可存在多个节点。如生产环境的多个节点app1,app2

部署单元:部署单元由环境集,节点,服务,三部分组合而成的服务容器(通俗的描述:就是在某个环境集的某台节点部署某个服务,在docker服务下表现为服务容器,运行状态下可使用docker ps查询)

文件:文件将会绑定部署单元,而部署单元在升级时会携带绑定的文件和内容 网络:解决特定的网络环境问题,如mtu,容器子网网段

yaml配置文件:每一个容器,在docker-compose模型中,都可以以一份yaml文件来描述其运行信息,应用以各项配置的优先级(服务<环境集<SetSubEnv<节点<部署单元)进行整合,最终生成为一份yaml配置文件。

构建任务:构建任务描述信心实际上是部署单元的描述信息(在某个环境构建某个服务的某个分支,部署在这个环境的某个节点上)