一文看懂ingress nginx实现灰度发布和蓝绿发布过程

背景信息
灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。

其中AB测试就是一种灰度发布方式,一部分用户继续使用老版本的服务,将一部分用户的流量切换到新版本,如果新版本运行稳定,则逐步将所有用户迁移到新版本。

本文将介绍在K8S集群中如何通过Nginx Ingress Controller基于服务权重的流量来实现应用服务的灰度发布。

环境
需要在一套k8s集群部署两套应用,上线后,再删掉其中一套。

优点:节省资源

缺点:浪费人力

条件好的情况下:建议部署两套K8s,通过最外层流量负载均衡两套k8s实现灰度发布。

点击参考阿里云官网​

架构如下

实现注解实现蓝绿发布与灰度发布

  • canary-*注解方式:使用​​canary-*​​​ Annotation配置蓝绿发布与灰度发布,​​canary-*​​ Annotation是社区官方实现的灰度发布方式。

第一步:灰度发布

步骤:

1、首先需要创建两个应用(旧版本nginx,老版本nginx),新版本ingress配置注解(重要)

2、新旧版本Nginx分别部署ingress、service、deployment

老版本nginx

old-new-ingress -> old-nginx-service ->  old-nginx-deployemnt

旧版本nginx

new-nginx-ingress -> new-nginx-service ->  new-nginx-deployemnt

新版本ingress配置注解

annotations:
    # 开启Canary。
    nginx.ingress.kubernetes.io/canary: "true"
    # 仅允许50%的流量会被路由到新版本服务new-nginx中。
    # 默认总值为100。
    nginx.ingress.kubernetes.io/canary-weight: "50"

架构如下

解释:部署了两套nginx应用,一套更旧版本nginx应用,一套新版栖nginx应用。新旧的nginx应用都配置了ingress相同的host。

而新的ingress还添加了注解

canary:true 代表开启使用灰度发布

cnary-weight: 代表当用户来访问的时候 会有一半流量是会从new-nginx-ingress这个ingress进来访问新版本的nginx。而另一半则从old-nginx-ingress的ingress去访问老版本的nginx。

第二步:流量整合

步骤:

1、把old-nginx-service指向访问new-nginx-deloyment

2、删除new-nginx-ingress

3、删除new-nginx-service

4、删除old-nginx-deployment

架构如下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值