如何Kubernetes集群中通过 Ingress 实现灰度发布和蓝绿发布?
本文介绍如何利用阿里云容器服务的Ingress功能,实现灰度发布和蓝绿发布。
背景信息 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。
其中A/B测试就是一种灰度发布方式,一部分用户继续使用老版本的服务,将一部分用户的流量切换到新版本,如果新版本运行稳定,则逐步将所有用户迁移到新版本。
应用场景 场景一
假设当前线上环境,您已经有一套服务Service A对外提供7层服务,此时上线了一些新的特性,需要发布上线一个新的版本Service A',但又不想简单地直接替换掉Service A服务,而是希望将请求头中包含foo=bar或者cookie中包含foo=bar的客户端请求转发到Service A'服务中,待运行一段时间稳定后,可将所有的流量从Service A切换到Service A'服务中,再平滑地将Service A服务下线。场景一 场景二
假设当前线上环境,您已经有一套服务Service B对外提供7层服务,此时修复了一些问题,需要发布上线一个新的版本Service B',但又不想简单地将所有客户端流量切换到新版本Service B'中,而是希望将20%的流量切换到新版本Service B'中,待运行一段时间稳定后,可将所有的流量从Service B切换到Service B'服务中,再平滑地将Service B服务下线。场景二 针对以上多种不同的应用发布需求,阿里云容器服务Kubernetes的 Ingress 功能提供的4种流量切分方式:
灰度发布中的A/B 测试: 基于Request Header的流量切分 基于Cookie的流量切分 基于Query Param的流量切分 蓝绿发布:基于服务权重的流量切分
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。