CI/CD流水线技术方案

引子

因为公司的集成及发布流程太LOW,基本就是上个世纪的那一套,无论是部署还是开发集成都要为此花费大量精力。出了设计书,已经实现了完全自动化,无奈推广不利,好东西还是要运营啊,分享下设计书

目的

技术现状及痛点

在这里插入图片描述
如上图可见,从程序包分发出去开始,即由项目实施人员对程序包进行安装、部署。其中部署环境包括kafka/nginx/redis/jdk/mysql/grafana/influxdb等等。

产品的正常运行,还依赖各种配置文件的正确设置(如xml文件/properties文件/其它文件/db/等,需配置相应的ip/端口/名称/地址等),一旦有地方配置有误,运行报错,实施人员则需要反复检查相应的配置文件/环境配置是否正确。

若无法检查出问题,则还会需要找相应的开发人员寻找原因。这个过程对于实施人员是反复且痛苦的。

以上流程,若是通过手工执行,痛点有以下几点:

  1. 产品分发管理不规范:给了多少项目组使用,各项目使用的是什么版本
  2. 部署包传送麻烦:QQ/FTP
  3. 部署过程复杂
  4. 配置文件繁琐
  5. 配置容易出错
  6. 出错难定位问题
  7. 实施人员-开发人员耦合度高

预期目的

对于项目型应用,基于上述的痛点,本方案就是用于解决项目实施人员在部署时的遇到的问题,让实施人员部署应用时更简单,快捷,少配置,少错,易查。并节省开发时间,缩短频繁迭代所带来的调试和部署压力,将整个交付过程进度可视化,将人工干预成都降到最低。减轻部署压力,缩短部署时间,使应用可发布到任何流行的Linux机器或Windows 机器上。
自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本并部署。

流程图

在这里插入图片描述

  1. 提交代码到代码仓库,根据tag区分代码版本
  2. 通过Webhook 触发自动构建
  3. Jenkins 触发构建构建任务,根据 Pipeline 脚本定义分步骤构建
  4. 先进行代码静态分析,单元测试
  5. 然后进行 Maven 构建(Java 项目)
  6. 根据构建结果构建 Docker 镜像,根据git tag生成镜像tag
  7. 推送 Docker 镜像到 Harbor 仓库,根据tag区分版本
  8. 触发更新服务阶段,使用 Helm 安装/更新 Release
  9. 查看服务是否更新成功。

软件系统技术方案设计

本项目是一个基于 Spring Boot、Spring cloud、React 和 python 构建的应用。

服务器方案设计

网络方案设计

设计原则

不改变/占用目标环境的网络环境

设计要点
  1. 容器的 IP 地址分配
  2. 容器之间的相互通信
方案设计

Docker host

方案描述

Host 模式并没有为容器创建一个隔离的网络环境。而之所以称之为host模式,是因为该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,故 Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的 IP 地址即为宿主机 eth0 的 IP 地址。

方案设计理由

这种模式下的容器没有隔离的 network namespace
容器的 IP 地址同 Docker host 的 IP 地址
需要注意容器中服务的端口号不能与 Docker host 上已经使用的端口号相冲突

方案特点及优势

可与docker其他网络方式共存。

网络安全方案设计

依赖软件方案设计

依赖软件使用habor私有库进行镜像的版本管理,由公司维护自己的依赖软件。
名称 版本

软件

使用docker进行容器化,同时支持以下要求:

  1. 可配置性
    支持配置

  2. 数据持久化

  3. 可扩展性

自开发软件方案设计

自开发软件

使用docker进行容器化,同时支持以下要求:

  1. 可配置性
    可配置
  2. 数据持久化
    日志/存储文件等保留到硬盘。

5 参考资料

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值