Skip to content

如何设置全链路蓝绿灰度发布由前端或者网关来执行

HaojunRen edited this page May 31, 2024 · 5 revisions

全链路蓝绿灰度方式

全链路蓝绿灰度方式,包括如下两种

  • 通过前端发送路由Header(例如:n-d-version)到网关和全链路服务上,由前端驱动全链路蓝绿灰度
  • 通过订阅配置中心规则策略,由网关发送路由Header(例如:n-d-version)到全链路服务上,由后端(网关)驱动全链路蓝绿灰度

通过网关开关实现控制

开关列表

  • Spring Cloud Gateway的开关
# 当外界传值Header的时候,网关也设置并传递同名的Header,需要决定哪个Header传递到后边的服务去。如果下面开关为true,以网关设置为优先,否则以外界传值为优先。缺失则默认为true
spring.application.strategy.gateway.header.priority=false
# 当以网关设置为优先的时候,网关未配置Header,而外界配置了Header,仍旧忽略外界的Header。缺失则默认为true
spring.application.strategy.gateway.original.header.ignored=true
  • Zuul网关的开关
# 当外界传值Header的时候,网关也设置并传递同名的Header,需要决定哪个Header传递到后边的服务去。如果下面开关为true,以网关设置为优先,否则以外界传值为优先。缺失则默认为true
spring.application.strategy.zuul.header.priority=false
# 当以网关设置为优先的时候,网关未配置Header,而外界配置了Header,仍旧忽略外界的Header。缺失则默认为true
spring.application.strategy.zuul.original.header.ignored=true

同理,在服务侧也有一个对应的开关

# 当外界传值Header的时候,服务也设置并传递同名的Header,需要决定哪个Header传递到后边的服务去。如果下面开关为true,以服务设置为优先,否则以外界传值为优先。缺失则默认为true
spring.application.strategy.service.header.priority=true

开关逻辑

  • 当如下配置为true的时候,表示当前端传入路由Header,网关上也设置了同样的规则策略,前端传入失效。这样,蓝绿灰度的权限就控制在网关上,避免前端来控制后端的蓝绿灰度
spring.application.strategy.gateway.header.priority=true
spring.application.strategy.zuul.header.priority=true
  • 当上述配置为false的时候,逻辑刚好相反过来
  • 在上述配置为true的情况下,可能由于运维人员失误等情况,未在网关上设置规则策略,同时前端也传入了路由Header。那么,您可以通过下面开关,控制是否也令前端传入失效
spring.application.strategy.gateway.original.header.ignored=true
spring.application.strategy.zuul.original.header.ignored=true




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally