CICD 规划

# DevOps

https://iothub.org.cn/docs/devops/
https://iothub.org.cn/docs/devops/cicd/cicd-plan/

一、概述

1.分布式系统关键技术

  • 微服务:采用微服务分布式架构
  • 容器部署:微服务容器化部署,支持容器的编排调度
  • 系统监控:系统监控、日志聚合、链路跟踪
  • 可用性:高可用、负载均衡、故障转移、水平扩展等
  • 开发运维:采用DevOps理念,搭建CI/CD流水线
  • 容灾:建立不同地理位置的控制中心,容灾切换

在这里插入图片描述
在这里插入图片描述

2.分布式系统CI/CD流水线

分布式系统CI/CD流水线主要实现微服务的持续集成(CI)、持续交付(CD)、持续部署(CD)。

  • 微服务采用Spring Cloud技术栈
  • 微服务采用容器化部署(Docker)
  • kubernetes进行容器管理(可选)
2.1.容器化CI/CD流水线

在这里插入图片描述

2.2.容器部署CI/CD流水线

在这里插入图片描述

2.3.Kubernetes部署CI/CD流水线

在这里插入图片描述

二、环境规划

1.环境介绍

开发过程中四个环境分别是:pro、pre、test、dev环境,中文名字:生产环境、灰度环境、测试环境、开发环境。

  • pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境
  • pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样
  • test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定
  • dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大

在这里插入图片描述

2.微服务规划

微服务部署原则:

  1. 微服务采用Helm部署,通过修改 values.yaml 进行部署升级
  2. pro、pre、test、dev环境,分别部署在名字空间:pro、pre、test、dev
  3. Harbor作为私有镜像仓库,存储微服务镜像
  4. Harbor作为Helm仓库

1.架构图
在这里插入图片描述

2.部署图
在这里插入图片描述

3.生产环境

  • 微服务:k8s部署微服务,名字空间:pro
  • 中间件:中间件部署在k8s外部,PostgreSQL、MySQL、Redis、RabbitMQ,名字空间:ext
  • 系统监控:k8s部署Prometheus,Elastic Stack部署在k8s外部
  • 镜像仓库:Harbor作为私有镜像仓库,创建springcloud项目
  • Helm仓库:Harbor作为Helm私有仓库

4.测试环境

  • 微服务:k8s部署微服务,名字空间:test
  • 中间件:k8s部署中间件,PostgreSQL、MySQL、Redis、RabbitMQ
  • 系统监控:k8s部署Prometheus,Elastic Stack
  • 镜像仓库:Harbor作为私有镜像仓库,创建springcloud项目
  • Helm仓库:Harbor作为Helm私有仓库

三、CI/CD流水线设计

1.CI/CD流水线规划

分布式系统CI/CD流水线总体规划:

  • 分开搭建持续集成(CI)、持续交付(CD)、持续部署(CD)流水线
  • 持续集成创建微服务镜像,容器(Docker)镜像上传Harbor私有镜像仓库
  • CD流水线容器化部署,Kubernetes根据实际需求选择
  • 持续交付流水线(CD)面向开发环境(dev)、测试环境(test)
  • 持续部署流水线(CD)面向生产环境(pro)、灰度环境(pre)
  • CD流水线部署脚本使用GitLab进行版本维护

2.持续集成(CI)

在这里插入图片描述

2.1.持续集成规划

持续集成方案: Jenkins + GitLab + Maven + Docker + SonarQube + Harbor

  • Jenkins:开源持续集成工具,用于项目开发,具有自动化构建、测试和部署等功能

  • GitLab:源代码仓库,使用Git作为代码管理工具

  • SonarQube:用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误

  • Harbor:开源的企业级DockerRegistry项目,搭建企业级的Dockerregistry服务

2.2.Git分支管理

下面是Git Flow的流程图

在这里插入图片描述

根据生命周期区分

  • 主分支:master,develop
  • 临时分支eature/,release/,hotfix/

根据用途区分

  • 发布/预发布分支:master,release/*
  • 开发分支:develop
  • 功能分支:feature/*
  • 热修复分支:hotfix/*
2.3.容器镜像管理

容器镜像构建:

  • 发布镜像: 是稳定版本,运行于生产环境、灰度环境,从master分支构建,使用master分支tag作为标签,镜像标签命名规则 xxx.xxx.xxx,例如 eureka:1.0.0,eureka:1.5.0
  • 测试镜像: 是临时镜像,使用完成删除,运行于开发环境、测试环境,是从master以外的分支构建的, 镜像标签是发布镜像对应的版本标签加后缀 -xxx,例如 eureka:1.0.0-release1.1,eureka:1.5.0-dev1.5,eureka:1.5.0-hotfix1.0

容器运行环境:

  • 发布镜像: 生产环境(pro)、灰度环境(pre)
  • 测试镜像: 开发环境(dev)、测试环境(test)

3.持续部署(CD)

3.1.持续部署规划

持续部署规划:

  • 部署环境:生产环境(pro)、灰度环境(pre)
  • 部署脚本:部署shell脚本文件使用GitLab进行版本控制,尽量保持与微服务版本关联
  • 容器环境:可以部署到Kubernetes或Docker
  • K8S环境:使用Helm部署微服务
3.2.部署方案
  • 方案一: Jenkins + GitLab + Harbor + Docker
    在这里插入图片描述

  • 方案二: Jenkins + GitLab + Harbor + Kubernetes
    在这里插入图片描述

4.持续交付(CD)

4.1.持续交付规划

持续交付规划:

  • 部署环境 :开发环境(dev)、测试环境(test)
  • 部署脚本:部署shell脚本文件使用GitLab进行版本控制,尽量保持与微服务版本关联
  • 容器环境 :可以部署到Kubernetes或Docker
  • K8S环境:使用Helm部署微服务
4.2.部署方案

与持续部署的部署方案相同。

# DevOps

https://iothub.org.cn/docs/devops/
https://iothub.org.cn/docs/devops/cicd/cicd-plan/
  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CICD(Continuous Integration and Continuous Deployment)是一种软件开发流程,它的目标是通过自动化的方式实现代码的集成、构建、测试和部署。Maven是一个Java项目的构建工具,它可以管理项目的依赖、编译代码、运行测试等。 在CICD流程中,Maven通常被用来管理项目的构建和依赖。以下是CICD和Maven的一些关键概念和步骤: 1. 持续集成(Continuous Integration):持续集成是指开发人员将代码频繁地合并到共享的代码仓库中,并通过自动化的构建和测试流程来验证代码的质量。 2. 持续部署(Continuous Deployment):持续部署是指将经过验证的代码自动部署到生产环境中,以实现快速交付和反馈。 3. 构建工具:Maven是一种常用的构建工具,它使用基于XML的配置文件(pom.xml)来定义项目的结构、依赖和构建过程。 4. 依赖管理:Maven可以管理项目的依赖,通过在pom.xml文件中声明依赖项,Maven可以自动下载所需的库文件,并将其添加到项目的类路径中。 5. 生命周期和插件:Maven定义了一套生命周期和插件机制,通过配置不同的生命周期和插件,可以实现项目的编译、测试、打包、部署等一系列操作。 6. 自动化构建和测试:通过配置Maven的插件,可以实现自动化的代码编译、单元测试、集成测试等操作。这些操作可以在代码提交到版本控制系统后自动触发。 7. 部署和发布:Maven可以将项目打包成可执行的文件(如JAR、WAR),并将其部署到服务器上。通过配置Maven插件,可以实现自动化的部署和发布过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoTHub - 物联网开源技术社区

支持开源技术! 传播开源文化!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值