参考资料:通过Ingress实现灰度发布和蓝绿发布 - 容器服务 ACK - 阿里云
Pre发布
( 1 在CI/DI灰度环境菜单中选择对应项目进行pre发布(发布前,确认原类型是ingress,并且填上RoutId)
2 点击发布,调 k8s部署容器,创建对应service (Group名称对应serviceName)
3 调用k8s成功后,在CI/DI自动调用网关接口(传RoutId),网关调用iingreaaAPI,找到原Ingress,在该ingress中添加annotations( h-x-strategy-token-cmnet=CompanyNetwork),并且关联对应service
以上是基于CI/DI的发布流程,可以忽略
重点是:ingress中添加annotations的内容
请求后会自动根据头部信息(h-x-strategy-token-cmnet=CompanyNetwork),路由到对应service
多版本发布
在该ingress的annotations中添加如下代码 (ingress和nginx一样)
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($http_version = "bj") {
proxy_pass http://nginx-normal-2-80.fat:80;
break;
}
if ($http_version = "sz") {
proxy_pass http://nginx-pre-80.fat:80;
break;
}
请求后,会根据头部信息(version = sz) 路由到对应的地址
其他细节:
去除前缀: