当前位置:网站首页 > 技术博客 > 正文

灰度发布技术




首先在案例之前,先认识一下被业界广泛采用的服务发布有哪些,也是我们之后要实现的东西什么

在现代软件开发和运维中,服务发布策略至关重要,以确保新版本能够顺利上线并最小化风险。以下是几种被业界广泛采用的服务发布策略:

  1. 蓝绿发布(Blue-Green Deployment)
    概念:
    蓝绿发布是一种减少停机时间和风险的部署策略。它通过维护两套几乎完全相同的生产环境——蓝色环境和绿色环境——来实现平滑的版本切换。
    流程:
    蓝色环境:当前活跃的生产环境,正在处理实际的用户流量。
    绿色环境:待更新的新版本被部署到绿色环境中。
    切换流量:一旦新版本在绿色环境中通过所有测试,流量从蓝色环境切换到绿色环境。
    回滚:如果新版本出现问题,可以迅速切换回蓝色环境。
    优点:
    无缝切换,最小化停机时间。
    容易回滚,风险较低。
    缺点:
    需要两套生产环境,成本较高。
    资源利用率可能不高。
  1. A/B 测试(A/B Testing)
    概念:
    A/B 测试是通过将用户流量分成两组或多组,分别体验不同版本的应用,从而比较其效果和性能差异的一种发布策略。
    流程:
    版本划分:创建版本A(现有版本)和版本B(新版本)。
    流量分配:随机将用户流量划分到A/B两个版本中。
    数据收集:收集用户在不同版本下的行为数据。
    分析结果:分析数据确定哪个版本表现更好。
    优点:
    可以在真实环境中验证新功能的效果。
    数据驱动决策,精确了解用户偏好。
    缺点:
    需要数据分析能力强,才能有效评估结果。
    对用户体验可能产生不一致的影响。
  1. 金丝雀发布(Canary Release)
    概念:
    金丝雀发布是一种逐步发布策略,通过向一小部分用户发布新版本,观察其表现并逐步扩大覆盖面,以确保新版本的稳定性和可靠性。
    流程:
    小规模发布:将新版本发布给少量用户(通常是内部用户或早期测试用户)。
    监控和评估:密切监控新版本的性能和用户反馈。
    扩大发布范围:如果新版本表现良好,逐步增加覆盖用户直到全量发布。
    优点:
    风险较小,可以早期发现问题。
    逐步发布,问题排查和修复较为容易。
    缺点:
    发布和监控过程较为复杂,需要持续观察。
    需要良好的监控和反馈机制。

虚拟机

Ip主机名cpu内存硬盘192.168.10.11master012cpu双核4G100G192.168.10.12worker012cpu双核4G100G192.168.10.13worker022cpu双核4G100G

一、负载均衡器metallb部署

1. 修改kube-proxy代理模式
 

更改两处
strictARP 后的flase改为true
node 后添加ipvs
没看见往下翻

在这里插入图片描述

重启

 
2. metallb部署
 

也可以使用离线下载后的文件部署

 

查看

 

等待一会,可通过查看描述信息跟踪pod的运行状态,长时间无法完成下载时,各节点重启docker

 
3. IP地址池准备
 

addresses下是范围

 

yaml应用

 

查看地址池信息

 

在这里插入图片描述

4.开启二层通告
 
 

应用yaml

 

二、 服务代理ingress nginx部署

(1)获取ingress nginx部署文件
创建目录

 

windows浏览器打开文件:

 

复制文件内容到linux中deploy.yaml文件

 

(2)修改部署文件deploy.yaml

 

修改前
在这里插入图片描述
修改后
在这里插入图片描述

(3)部署ingress nginx

 

稍等几分钟后查看 需要vpn,没有的话查看信息时会显示连接不到镜像仓库

 

可以看到已经成功运行了
在这里插入图片描述
修改configmap

 

在这里插入图片描述

 

将false改为true
修改前
在这里插入图片描述
修改后
在这里插入图片描述

重启ingress-nginx应用:

 

在这里插入图片描述

三、应用服务部署

1.v1版本部署
 
 

部署yaml并查看

 

在这里插入图片描述
查看service

 

在这里插入图片描述
看看能不能访问到

 

在这里插入图片描述

2.v2版本部署
 
 

应用yaml文件并查看

 

在这里插入图片描述
查看service

 

在这里插入图片描述
测试

 

在这里插入图片描述

3.创建stable版本ingress资源对象(对外发布)
 
 

应用ingress.yaml文件并查看

 

在这里插入图片描述
在hosts添加域名解析

 

添加
192.168.10.240 www.test.com
在这里插入图片描述
测试

 

在这里插入图片描述
创建目录并进入

 

四、流量切分

1.基于服务权重的流量切分

创建yaml文件

 
 

应用yaml文件

 

注:虽然这里显示的是192.168.10.13但实际上还是通过域名访问到192.168.10.240的
在这里插入图片描述
测试
简单的shell脚本应用,测试10次

 

虽然设置的是百分之十的流量,但实际应用不一定是10个里只有一个访问v2

在这里插入图片描述

2.基于用户请求头Header的流量切分

为了不影响,先删除上个yaml文件生成的应用,然后创建新的yaml文件

 
 

应用新的yaml文件并查看

 

在这里插入图片描述
测试
-H 大概意思就是模拟请求头内容

 

可以看到效果
在这里插入图片描述

3.基于Cookie的流量切分

使用 Cookie 则无法自定义 value,以模拟灰度shenzhen地域用户为例,仅将带有名为 user_from_shenzhen的 Cookie 的请求转发给当前 Canary Ingress

照旧

 
 

应用yaml文件并查看

 

在这里插入图片描述
测试

 

在这里插入图片描述

可查看当仅有 cookie user_from_shenzhen 为 always 的请求才由 v2 版本的服务响应。

至此 完成

每种发布策略都有其特定的优缺点,选择合适的策略需要根据项目规模、团队能力和业务需求来综合考虑。蓝绿发布适合对稳定性要求极高的项目,A/B 测试适合需要数据驱动决策的功能优化,金丝雀发布则适合希望逐步发布、降低风险的场景。通过合理运用这些策略,可以有效提升发布过程的效率和质量。

版权声明


相关文章:

  • linux getopt函数2024-12-12 14:01:02
  • 蒙特卡罗搜索树的步骤2024-12-12 14:01:02
  • 极大似然估计概念2024-12-12 14:01:02
  • yum查看依赖包2024-12-12 14:01:02
  • 计算机就业前景怎么样2024-12-12 14:01:02
  • c语言中左移运算符怎么用2024-12-12 14:01:02
  • 软件安全测试方法2024-12-12 14:01:02
  • php pathinfo函数2024-12-12 14:01:02
  • 美团外卖搜索引擎2024-12-12 14:01:02
  • 栅格式布局2024-12-12 14:01:02