主流发布方案介绍

一、蓝绿发布

        项目逻辑上分为AB组,在项目升级时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。A组升级完成上线,B组从负载均衡中摘除。

特点:

  • 策略简单
  • 升级/回滚速度快
  • 用户无感知,平滑过渡

缺点:

  • 需要两倍以上服务器资源
  • 短时间内浪费一定资源成本
  • 有问题影响范围大

二、滚动发布

        每次升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程。直到集群中的全部旧版本升级新版本。

        kubernetes的默认策略是发布策略。

特点:

  • 用户无感知,平滑过渡

缺点:

  • 部署周期长
  • 发布策略叫复杂
  • 不易回滚
  • 有影响范围较大

三、灰度发布(金丝雀发布)

        只升级部分服务,即让一部分用户继续用老版本,一部分用户开始使用新版本,如果用户对新版本没有什么意见,那么逐步推广大范围,把所有用户都迁移到新版本上。

特点:

  • 保证整体系统稳定性
  • 用户无感知,平滑过渡

缺点:

  • 自动化要求高

四、A/B Test

        灰度发布的一种方式,主要对特定用户采样后,对手机到的反馈数据做相关对比。然后根据比对结果做出决策。用来测试应用功能表现的方法,侧重应用的可用性,欢迎程度等,最后决定是否升级。

五、灰度发布示例-部署Bookinfo为服务项目

项目位置:istio-1.20.0/samples/bookinfo

Bookinfo是官方提供一个图书评测系统微服务项目示例,分为:

服务说明调用服务
productpage主页reviews,details
reviews评论内容ratings
details详细内容
ratings评分

5.1 创建命名空间及自动注入的标签:

# kubectl create ns bookinfo

# kubectl label namespace bookinfo istio-injection=enabled

5.2 创建命名空间

# kubectl apply -f platform/kube/bookinfo.yaml -n bookinfo

# kubectl get pod,svc -n bookinfo

reviews微服务部署3个版本,用于测试灰度发布效果:

  • v1版本不会调用ratings服务
  • v2版本会调用ratings服务,并使用5个黑色五角星显示评分信息
  • v3版本会调用ratings服务,并使用5个红色五角星来显示评分信息

5.3 创建ingress网关

# kubectl apply -f networking/bookinfo-gateway.yaml -n bookinfo

5.4 确认网关和访问地址,访问应用页面

# kubectl get pods,svc -n istio-system

http://192.168.2.60:32040/productpage

5.6 灰度发布:基于权重的路由

操作流程:

  1. 流量全部发送到review v1版本(不带五角星)
  2. 将90%的流量发送到reviews v1版本,另外10%的流量发送到reviews v2版本(5个黑色五角星),最后完全切换到v2版本
  3. 将50%的流量发送到v2版本,另外50%的流量发送到v3版本(5个红色五角星)
## 全部流量导入 reviews v1版本
# kubectl apply -f networking/virtual-service-all-v1.yaml -n bookinfo

# kubectl  apply -f networking/destination-rule-all.yaml -n bookinfo


## 将90%的流量发送到reviews v1版本,另外10%的流量发送到reviews v2版本(5个黑色五角星)
# kubectl  apply -f networking/virtual-service-reviews-90-10.yaml -n bookinfo

##将50%的流量发送到v2版本,另外50%的流量发送到v3版本(5个红色五角星)
# kubectl  apply -f networking/virtual-service-reviews-v2-v3.yaml -n bookinfo

5.7 恢复发布:基于请求内容的路由

将特定用户的请求发送到reviews v2版本(5个黑色五角星),其他用户则不受影响(v3)

# kubectl apply -f networking/virtual-service-reviews-jason-v2-v3.yaml -n bookinfo

5.8 灰度发布:工作流程

5.8 在实际业务中的使用流程

  1. 将部署应用的deployment里pod标签增加一个version:v1
  2. 部署deployment接入到istio
  3. 目标规则关联访问版本标签
  4. 虚拟服务实现灰度发布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值