做了一个比较稳的灰度发布方案,核心是 Nginx + 多版本 upstream,按权重分流。
upstream app {
server app-v1:3000 weight=90;
server app-v2:3000 weight=10;
}
进阶版按 cookie/header 灰度:内测用户固定走 v2,其它走 v1。这样能保证同一用户体验一致。
map $cookie_canary $upstream {
"true" app-v2:3000;
default app-v1:3000;
}
K8s 下用 Istio / Nginx Ingress 的 Canary 注解更优雅。
大家的灰度方案是啥?