基于云原生 API 网关实现全链路灰度(1) 借助CAE提供的全链路灰度能力,您可以在无需侵入业务代码的情况下,对请求流量进行统一调度与控制。本文将围绕云原生 API 网关的使用场景,说明如何构建端到端的全链路灰度方案,实现应用版本的平滑发布与流量精细化管理。 名词说明 云原生 API 网关:一款面向云原生场景设计的统一流量入口产品,兼容 Kubernetes Ingress 标准,集成了 API 管理、流量转发、微服务访问控制及安全防护等能力,帮助用户快速构建安全、稳定的访问体系。 泳道:用于为同一业务应用划分独立的运行隔离单元。只有满足灰度路由规则的请求,才会被引导至对应泳道中的标记应用实例。应用与泳道之间支持多对多关系,便于灵活组织复杂的灰度场景。 泳道组:用于对多个泳道进行统一归类和管理,通常用于区分不同团队、业务线或使用场景下的灰度环境。 基线环境:用于承载未参与灰度的应用实例,作为默认流量承载环境。当请求未命中任何灰度规则时,将自动路由至基线环境。 请求唯一标识:请求会携带此字段以标识请求唯一性,例如 xtraceid、requestid。 场景示例 本文通过模拟真实的服务调用链路,演示如何基于云原生 API 网关实现全链路灰度。整个过程中无需修改业务代码,仅需在入口应用配置流量规则,相关流量标签即可在调用链路中自动透传。在服务调用过程中,命中规则的请求将优先路由至对应的灰度应用;当链路中某一环节不存在匹配的灰度应用时,请求将自动回退至基线应用,确保业务的连续性和稳定性。 各测试应用如下所示: 创建sla、slb和slc三个应用,镜像都选择 Golang 的 caedemo。sla 应用创建灰度应用 slag1,slag2,slb 应用创建灰度应用 slbg2,slc 应用创建灰度应用 slcg1,slcg2。以上基线应用和灰度应用都开启 K8s Service服务注册发现,都打开服务治理(服务网格)。 基线应用 灰度应用 灰度标签 sla slag1 cae.service.tag:g1 sla slag2 cae.service.tag:g2 slb slbg1 cae.service.tag:g1 slc slcg1 cae.service.tag:g1 slc slcg2 cae.service.tag:g2 正常流量调用链路: 云原生 API 网关 > 应用 sla > 应用 slb > 应用 slc。 标签流量调用链路: xcaetraffictagg1 流量:云原生 API 网关 > 应用 slag1 > 应用 slbg1 > 应用 slcg1。 xcaetraffictagg2 流量:云原生 API 网关 > 应用 slag2 > 应用 slb > 应用 slcg2。
来自: