运维知识

月伴飞鱼 2024-06-23 15:20:26
服务器
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

发布方案

蓝绿发布

蓝绿部署,是指同时运行两个版本的应用。

在蓝绿部署时,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。

例如发布前,在蓝色的系统上进行测试,测试完成后切换为蓝色系统,同时观察蓝色系统的运行状态,如果运行出现问题可以及时切回绿色系统。

优点:

这样做可以减少发布影响的时间。例如某网站要进行后端升级,无需完全停掉服务更新,且出现问题后可以及时切回老版本。

缺点:

需要两倍的硬件资源,需要额外进行付费;微服务架构很难这样进行迁移;要求蓝绿两套系统完全没有耦合;迁移后未完成的任务进行迁移需要一定的成本,如数据库的迁移。

滚动发布

取出部分服务器停止服务,执行更新,更新完成后,让流量流向此更新完成的机器。周而复始,直到集群中所有的实例都更新成新版本。

优点:

不需要准备两套完整的机器,节约资源。

缺点:

回滚困难,流量直接到新的机器上,出现问题后,无法实现快速回滚;更新时间长,带来额外的风险,如果80%完成更新后发生重大漏洞,回滚会比较耗时和困难。

灰度发布

灰度发布,又名金丝雀发布,是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量。

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来。

测试成功后,将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。

直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。

部署方案

K8S部署过程

image-20231009095738832

开发人员提交代码到Git版本仓库;

Jenkins人工/定时触发项目构建;

Jenkins拉取代码、代码编码、打包镜像、推送到测试环境的镜像仓库;

k8s拉取镜像产生pod中的容器;

测试环境中测试没有问题后,把镜像同步到生产的镜像仓库中;

生产环境K8S部署镜像;

Jenkins

Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需要。

文档:https://www.jenkins.io/zh/doc/

官网:https://jenkins.io/

没有Jenkins时:

软件在开发者的机器上通过脚本或者手动构建,源代码保存在代码服务器中。

但是开发者经常要修改本地代码,因此每次发布,都需要手动合并代码,再进行手动构建,这个过程费时费力。

img

使用Jenkins部署项目

img

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!