服务发布 本节介绍了云容器引擎的最佳实践:服务发布。 灰度发布和蓝绿发布 当对服务进行版本更新升级时,需要使用到滚动升级、分批暂停发布、蓝绿发布以及灰度发布等发布方式。本文将介绍在云容器引擎集群中如何通过Nginx Ingress Controller来实现应用服务的灰度发布。 背景信息 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。 其中AB测试就是一种灰度发布方式,一部分用户继续使用老版本的服务,将一部分用户的流量切换到新版本,如果新版本运行稳定,则逐步将所有用户迁移到新版本。 云容器引擎控制台灰度发布功能的用法如下。 canary注解方式:使用canary Annotation配置蓝绿发布与灰度发布,canary Annotation是社区官方实现的灰度发布方式。 应用场景 基于客户端请求的流量切分场景:假设当前线上环境,您已经有一套服务Service A对外提供7层服务,此时上线了一些新的特性,需要发布上线一个新的版本Service A'。但又不想直接替换Service A服务,而是希望将请求头中包含foobar或者Cookie中包含foobar的客户端请求转发到Service A'服务中。待运行一段时间稳定后,可将所有的流量从Service A切换到Service A'服务中,再平滑地将Service A服务下线。 基于服务权重的流量切分场景:假设当前线上环境,您已经有一套服务Service B对外提供7层服务,此时修复了一些问题,需要发布上线一个新的版本Service B'。但又不想将所有客户端流量切换到新版本Service B'中,而是希望将20%的流量切换到新版本Service B'中。待运行一段时间稳定后,再将所有的流量从Service B切换到Service B'服务中,再平滑地将Service B服务下线。 针对以上多种不同的应用发布需求,天翼云容器云服务引擎Ingress Controller支持了多种流量切分方式:基于Request Header的流量切分,适用于灰度发布以及AB测试场景。基于Cookie的流量切分,适用于灰度发布以及AB测试场景。基于Query Param的流量切分,适用于灰度发布以及AB测试场景。基于服务权重的流量切分,适用于蓝绿发布场景。