用Istio实现蓝绿部署和金丝雀部署

本文介绍了如何利用Istio在OpenShift上对Spring Boot应用执行蓝绿部署和金丝雀部署。通过配置DestinationRule和VirtualService来控制路由权重,实现平滑升级和回滚。在蓝绿部署中,新版本(v2)先占50%流量,验证成功后全量切换;金丝雀部署则逐步增加v2的流量比例。遇到路由权重不生效的问题,可以通过检查ServiceMesh配置、Deployment标签等进行排查。
摘要由CSDN通过智能技术生成

用Istio实现蓝绿部署和金丝雀部署

前言

本文描述了用Istio对Spring Boot应用实现蓝绿部署和金丝雀部署。

环境:

  • OpenShift 4.6
  • Service Mesh 2.x (Istio 1.6.5)
  • Spring Boot 2.2.11.RELEASE
  • Java 8

本例的项目已纳入Istio管理,并注入了sidecar,并配置了原来版本(v1)的Istio config。

参见:

本例调用链:

customer -> preference -> recommendation (v1/v2)

蓝绿部署

目的:

  • 如果发布失败,只影响部分用户,且不需要重新部署程序,可以快速回滚。

过程:

  1. 线上原版本为v1。
  2. 部署新版本v2,线上同时存在两个版本(蓝和绿版本)。
  3. 切换50%路由到v2。
  4. 验证通过后,切换100%路由到v2。如果验证失败,切换100%路由回v1(回滚)。

注意:先配置DestinationRule,后配置VirtualService,避免出现503错误。参见:

金丝雀部署

目的:

  • 和蓝绿部署类似,更加谨慎地逐步切换到新版本。

过程:

  1. 线上原版本为v1。
  2. 部署新版本v2,线上同时存在两个版本(蓝和绿版本)。
  3. 切换10%路由到v2。
  4. 验证通过后,把更多的流量(比如20%),切换到v2。
  5. 逐步增加分发给v2的流量,直到把100%的流量都分发给v2。
  6. 如果验证失败,切换100%路由回v1(回滚)。

Istio路由分发

下图列出了recommendation服务的路由分发架构。
简单起见,没有画出服务调用链上的其他服务。

在这里插入图片描述

部署新版本

创建一个新的Deployment来部署新版本v2。

该Deployment中的labelsselector.matchLabels需要包含 version: v2 标签。

以服务recommendation的Deploy

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值