目录

架构

架构
  • 架构图
  • 核心组件
  • 相关组件

架构

Dory-Engine架构

../../images/architecture.png

  • Dory-Engine可以部署在k8s中[推荐],也可以使用docker-compose直接部署在docker中[测试用途]
  • 所有流水线步骤都在远程的docker中执行,远程docker就是Dory-Engine的步骤执行器,编译、打包、部署、扫描、自动化测试、自定义步骤等在执行的时候会随机选择一个远程docker启动容器并执行步骤,步骤执行结束后清理步骤容器。因此编译环境和所有步骤的执行环境都可以通过容器镜像轻松扩展
  • Dory-Engine和步骤执行器都可以根据资源消耗情况进行水平扩缩容
  • 可以接管各种DevOps组件
    • 可以接管各种代码仓库,支持自动在代码仓库中创建演示项目和流水线分支,并自动拉取项目代码,开发人员无需配置和编写任何代码仓库的参数和脚本
    • 可以接管各种容器镜像仓库,支持自动在容器镜像仓库中创建项目和分配权限,并自动把流水线打包的容器镜像推送到容器镜像仓库,开发人员无需配置和编写任何容器镜像仓库的参数和脚本
    • 可以接管各种制品仓库,支持自动在制品仓库中创建项目仓库和分配权限,并自动把流水线打包的制品压缩包推送到制品仓库,开发人员无需配置和编写任何制品仓库的参数和脚本
    • 可以接管各种代码扫描仓库,支持自动在代码扫描仓库中分配权限,并自动把代码扫描报告归档到Dory-Engine,开发人员无需配置和编写任何代码扫描仓库的参数和脚本
  • 可以接管各种部署环境
    • 可以接管各种版本的k8s环境,支持x86/arm64等不同cpu架构的k8s环境,支持分配gpu算力,支持通过流水线向k8s环境部署应用,也支持直接在k8s环境部署中间件
    • 可以接管各种版本的istio服务网格,实现混合灰度发布,支持三种灰度发布模式: 蓝绿发布、金丝雀发布、AB测试发布
    • 可以接管各种远程主机环境,支持linux、windows、macOS等多种操作系统,支持通过ansible向各种远程主机部署应用
    • 可以接管各种数据库,在数据库中执行注入/回滚的数据库脚本

核心组件

  • Dory-Engine由三个核心组件组成
    • dory-engine: Dory-Engine的核心后端服务
    • dory-console: Dory-Engine的前端管理界面
    • dorycli: Dory-Engine的命令行工具,用于安装Dory-Engine、管理Dory-Engine的配置以及执行流水线等用途

相关组件

  • 默认情况下,Dory-Engine的相关组件部署在dory的名字空间下
  • 快速安装情况下仅包含基础组件,完整安装情况下包含可选组件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ kubectl -n dory get pods
NAME                 READY   STATUS
dory-console-0       1/1     Running   # [基础组件] Dory-Engine的前端界面
dory-engine-0        1/1     Running   # [基础组件] Dory-Engine的后端服务
docker-0             1/1     Running   # [基础组件] Dory-Engine的流水线的步骤执行器,可水平扩展
docker-1             1/1     Running   # [基础组件] Dory-Engine的流水线的步骤执行器,可水平扩展
mongo-dory-0         1/1     Running   # [基础组件] Dory-Engine的数据库
redis-dory-0         1/1     Running   # [基础组件] Dory-Engine的缓存数据库
openldap-0           1/1     Running   # [基础组件] Dory-Engine的账号中心
ldapadmin-0          1/1     Running   # [基础组件] openldap的图形化管理界面
project-data-pod-0   1/1     Running   # [基础组件] Dory-Engine的共享存储挂装容器,用于向开发项目的共享存储转存文件用途
gitlab-0             1/1     Running   # [可选组件] 代码仓库,用于存放开发项目的源代码,目前支持gitlab和gitea两种私有化部署的代码仓库
nginx-gitlab-0       1/1     Running   # [可选组件] 代码仓库的nginx代理
nexus-0              1/1     Running   # [可选组件] 依赖与制品仓库,用于缓存编译构建过程的依赖库,以及用于存储编译构建的制品
sonarqube-web-0      1/1     Running   # [可选组件] 代码扫描仓库,用于扫描开发项目源代码存在的bug、不良编码习惯、漏洞,以及分析单元测试覆盖率
sonarqube-db-0       1/1     Running   # [可选组件] 代码扫描仓库数据库
  • 默认情况下,容器镜像仓库部署在harbor的名字空间下
  • harbor容器镜像仓库为可选组件
1
2
3
4
5
6
7
8
$ kubectl -n harbor get pods
NAME                                 READY   STATUS
harbor-core-6bff57cfd9-46xl2         1/1     Running    # [可选组件]
harbor-database-0                    1/1     Running    # [可选组件]
harbor-jobservice-7fc978d679-ntzp4   1/1     Running    # [可选组件]
harbor-portal-5b568b7fd9-492wk       1/1     Running    # [可选组件]
harbor-redis-0                       1/1     Running    # [可选组件]
harbor-registry-f858fb7d9-nc4zn      2/2     Running    # [可选组件]