这篇说说如何将服务从 Spring Cloud Gateway 迁移到云原生网关。
一、步骤1:明确服务来源
如果你当前的服务来源为以下几种,可以直接迁移 SCG 配置。
·K8S 服务(使用 TKE 或 EKS)。
·注册中心服务(使用 TSF 或自建的 Nacos/Consul/Polaris)。
·未依赖任何服务发现机制,使用域名/固定 IP/IP 列表。
如果你当前的服务来源为其他类型的注册中心,可以先执行相应的迁移操作将服务注册到 Nacos/Consul/Polaris,再进行 SCG 配置迁移。
二、步骤2:迁移 Spring Cloud Gateway 配置
SCG 相关功能配置可以在控制台进行相应操作完成:
1. 注册中心/K8S 集群
云原生网关通过服务来源关联用户的注册中心或 K8s 集群,添加对应类型的服务来源后,即可添加相应服务作为网关服务,可参考如下文档进行服务来源配置:服务来源。
2. 服务配置
Spring Cloud Gateway 的 service 对应云原生网关的服务,可参考如下文档进行服务配置:服务。
3. 路由配置
Spring Cloud Gateway 的 routes 对应云原生网关的路由,可参考如下文档进行路由配置:路由。
4. 常用的 Predicate 配置
·Host/Method/Path Route Predicate:云原生网关支持根据 Host,Method 或 Path 进行路由匹配,可在创建路由时设置匹配条件。
·Header/Cookie/Query Route Predicate:云原生网关支持根据上述参数进行路由,可通过灰度规则实现,可参考以下文档进行配置:灰度发布。
5. 默认 Filter
Spring Cloud Gateway的 filter 对应云原生网关的配置如下:
| GatewayFilter | 对应的云原生网关能力 | 相关文档 |
| AddRequestHeader, RemoveRequestHeader,AddRequestParameter,AddResponseHeader,SetResponseHeader | 使用 tse-proxy-rewrite 插件 | 使用重写插件改写请求或响应 |
| Hystrix,RequestRateLimiter | 限流能力 | 限流策略 |
| PrefixPath | 默认根据前缀匹配方式进行路由匹配 | – |
| PreserveHostHeader, StripPath, Retry | 创建路由时支持保持 Host、StripPath 选项、支持设置重试次数 | 服务与路由 |
| SetPath, RewritePath | 使用 Request Transformer/Response Transformer 插件 | – |
6. 自定义 Filter
认证鉴权,云原生网关支持主流认证鉴权方式,可参考以下文档进行配置。
·Basic Auth 安全认证
·IP 访问控制
·Key Auth 密钥认证
·使用 HMACAuth 认证访问
·使用 ACL 访问控制
·配置 JWT 认证鉴权
7. 自定义 Filter
云原生网关支持使用自定义插件进行自定义逻辑处理,你需要编码将自定义 Filter 的逻辑通过自定义插件实现。详细可参见 自定义插件。
三、步骤3:配置网关监控告警
云原生网关支持查看监控告警,你可以配置相关监控信息掌握当前网关状况,请参考以下文档使用监控告警。
·查看默认监控
·使用 Prometheus 监控
四、步骤4:流量迁移
在完成上述准备过程后,可按照灰度方式逐步进行流量切换,最终完成流量迁移。
第一阶段:选取部分非核心业务场景配置服务和路由,修改访问地址,进行小规模验证。
第二阶段:逐步扩展至核心业务,对核心业务进行配置变更,并迁移部分核心场景流量。
第三阶段:待充分验证后,切换域名解析进行全量迁移。