原API网关实例迁移到云原生API网关操作指南

本文档指导用户将原有API网关实例平滑迁移到云原生API网关,确保服务连续性。

1. 概述

目前云原生API网关是主要迭代的产品,原API网关的用户可以自由选择将业务迁移到云原生API网关中。下面是两个网关的业务流量架构图,需要迁移的用户,在云原生API网关配置好API元数据后,就可以逐渐通过修改域名解析的方式将业务流量从原API网关迁移至云原生API网关了。

image.jpeg

两个网关的概念差异

基于向OAS标准靠齐的考虑,原API网关与云原生API网关在API的概念上有一个比较重要的差异,在迁移过程中大家需要很好地理解这个差异:

  • API网关的API分组对齐云原生的API;

  • API网关的API对齐云原生API网关的接口。

不推荐迁移的情况

以下几种情况的用户目前不推荐迁移:

重要
  1. 共享实例用户(Serverless)当前费用较低,迁移到云原生API网关后需要购买实例进行生产,会产生实例费用,预算增加;

  2. 云原生API网关暂时未和云市场/DataWorks集成,云市场/DataWorks用户暂时不建议迁移;

2. 整体迁移流程

image.jpeg

3. 迁移操作步骤

3.1. 购买云原生实例

购买云原生API网关实例的时候,有两个点需要重点关注:

  • API网关实例规格的限制和云原生API网关规格的限制有差异,需要根据云原生API网关实例的规格重新评估业务容量,云原生API网关容量说明参考容量说明

  • 创建实例时,专有网络请务必选择您后端服务所在的VPC,否则会因为VPC之间网络不通而导致业务访问失败。

3.2. 配置API元数据

3.2.1. 配置域名与证书

我们创建完云原生API网关实例之后,首先需要把业务域名和对应的证书配置到云原生API网关上,具体配置访问请参考文档:

创建域名

更换域名的协议和证书

云原生API网关对SSL加密方式提供了更灵活的配置方式,您可以根据原API网关分组上的HTTPS安全策略中的TLS版本和加密套件在云原生API网关进行对等配置:

  1. 登录API网关控制台

  2. 在控制台左侧栏点击API管理-分组管理-点击分组名称,进入分组详情页面,找到对应的HTTPS安全策略类型。

  3. HTTPS安全策略文档中找到对应的TLS版本和加密套件详情。

  4. 在云原生API网关进行对等配置,具体配置参考文档设置指定HTTPS加密套件

重要

需要重点关注:

  • 云原生API网关没有环境的概念,域名只能和实例做绑定,当前在原API网关的环境绑定功能没办法做对等配置;

  • 云原生API网关目前暂时不支持OCSP/ssl_client_s_dn 透传等能力,用到这两个能力的情况暂时不建议迁移;

  • 云原生API网关目前暂时不支持基于泛域名的域名参数,用到域名参数的场景暂时不建议迁移;

3.2.2. API定义导入

API网关和云原生API网关都支持标准的OAS协议,您只需要将API定义从原API网关上导出成API定义文件(OAS协议),然后在云原生API网关进行导入就可以:

  1. 在原API网关导出整个分组的API定义,文档参考导出标准OAS定义

    1. 登录API网关控制台

    2. 在控制台左侧菜单中,选择API 管理>分组管理

    3. 分组列表页面中,选择对应的API分组。操作列>导出API定义

    4. 在弹出框导出API定义中指定导出的数据格式。

说明

需要注意的是,需要导出OAS3.0协议的API定义,不能勾选API网关扩展定义,并且直接导出线上的API定义。

  1. 将原API网关导出的API定义文件,导入到云原生API网关。

    1. 登录云原生API网关控制台。左侧导航栏选择API,并在顶部菜单栏选择地域。

    2. 单击创建API。在REST API中点击导入,上传上一步导出的API定义文件。

重要

需要重点关注的点:

  • 云原生API网关并不支持参数级别的校验,在原API网关配置的参数校验迁移到云原生API网关后会失效。

  • 云原生API网关需要通过请求/响应转换插件来实现参数映射功能;

  • 云原生API网关目前没有防重放能力,需要有这个能力的用户暂时不建议迁移;

3.2.3. 配置后端服务

接下来我们需要到实例里面去配置后端服务,原API网关支持的后端服务和云原生API网关支持的后端服务稍微有点差异:

API网关

云原生API网关

VPC授权(HTTP/HTTPS)

支持(固定地址/DNS域名)

公网地址(HTTP/HTTPS)

支持(固定地址/DNS域名,需要NAT)

函数计算

支持

EventBridge

不支持

Nacos/Zookeeper

支持

Mock

支持

DataWorks/Dataphin/DMS

不支持

OSS

不支持

最常见的后端是ECS/CLB产品形态,在云原生API网关新建固定地址类型的服务:

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标网关实例ID。

  4. 在左侧导航栏,选择服务,并单击创建服务,在创建服务面板,服务来源选择固定地址配置相关参数,完成后单击确定

重要

需要重点关注:

  • 云原生API网关是通过用户的ENI和后端服务进行通信的,在添加白名单的时候请使用实例的交换机的地址段,具体操作:进入实例详情页面,找到交换机连接,点击进去,找到对应的地址段

  • 如果后端服务在公网,那么云原生API网关实例使用的VPC内必须有公网NAT网关才可以打通公网,迁移前这块需要重点测试。

  • 如果用户后端服务部署在多个VPC中,需要使用CEN或者PLV进行网络打通后才能进行迁移。

3.2.4. 发布API

我们做完上述的配置工作之后,就可以把API发布到刚才购买的实例上进行测试了。云原生API网关的发布和原API网关的发布逻辑有较大的差异。

API网关的发布:

  • API所属的分组固定在用户选定的实例上,发布的时候不能够选择使用,API默认发布到分组所属的实例上;

  • API的后端服务是配置好的,每次发布的时候不需要指定后端服务;

  • 请求域名在分组上配置好,发布的时候不能够修改;

  • 每次发布需要指定环境,每次仅能发布到一个环境上;

  • 每次仅发布分组下的单个API;

云原生API网关的发布:

  • API可以发布的时候需要选择承载的实例,发布的内容仅在本次选择的实例上生效,API可以发布到多个实例上;

  • API每次发布的时候需要指定后端服务,发布的时候可以修改后端服务;

  • 每次发布的时候需要选择请求域名,如果有多个域名对外提供服务,每次发布的时候需要把所有域名都选择上;

  • 没有环境的概念,一般通过实例来区分环境;

  • 每次发布API下的所有接口,不支持单个接口的发布;

3.2.5. 配置插件

API发布到实例后,我们可以为API或者接口配置策略了。云原生API网关支持的策略和原API网关支持的插件体系有较大的差异,下面我把主要差异列举一下,供大家参考。

API网关

对应云原生API网关策略/插件

第三方鉴权插件

外部认证插件

注意云原生网关外部认证插件:

  • 不支持缓存

  • 不支持提取鉴权结果Body中的JSON中的字段作为判断鉴权结果的参数

  • 不支持提取鉴权结果Body中的JSON中的字段作为业务请求的参数

  • 不支持插件数据集与用户黑白名单机制

JWT插件

JWT插件

注意云原生网关JWT认证插件:

  • 不支持插件数据集与用户黑白名单机制

BasicAuth插件

Basic认证

后端签名插件

云原生API网关暂时不支持

流量控制插件-基础流控

流量控制策略

  • 针对不同应用进行的流控策略可以使用云原生API网关“基于 Key 限流”插件实现;

  • 针对不同用户的流控策略目前在云原生API网关无法支持;

流量控制插件-参数流控

基于 Key 集群限流

IP访问控制插件

IP 限制

参数访问控制插件

参数访问控制

跨域资源访问插件

跨域资源共享

缓存插件

通用响应缓存

后端路由插件

云原生API网关的服务原生支持基于匹配条件路由,也支持灰度路由

错误码映射插件

自定义应答插件:

使用Lua插件

断路器插件

熔断策略:

配置熔断规则

日志脱敏插件

云原生API网关暂时不支持

请求应答改写插件

请求/响应转换

说明

API网关的插件参考插件概述

云原生API网关的插件参考插件市场

3.2.6. 配置应用授权信息

  1. 应用(APP)迁移

API网关中“应用”的概念在云原生API网关中称为“消费者”,两者的能力是等效的,可以平滑迁移该能力。云原生API网关管理消费者参考管理消费者

重要

重点关注:

  1. 云原生API网关消费者的API Key就是原API网关的应用中AppCode的概念,可以选择自定义方式生成API Key,将原API网关应用下的AppCode迁移过来;

  2. 云原生API网关消费者的HMAC内的AK就是原API网关的应用中AK的概念,可以选择自定义方式生成AK,将原API网关应用下的AK迁移过来;

  1. 授权关系迁移

云原生API网关的消费者授权是基于接口的,和原API网关是一致的。我们可以在云原生API网关的API接口页面为指定的API接口配置授权关系,也可以在消费者页面,为消费者批量授权API接口。

4. 功能验证

我们把所有API元数据都配置好之后,就可以开始功能验证了,因为正式域名目前正在原API网关进行生成,我们在做功能验证的时候有两种测试方案:

  • 在云原生API网关上配置一个测试域名,把测试域名cname到实例的接入点上进行测试;

  • 修改测试机器的host配置,使用原生产域名进行测试。

解决了访问域名问题后,就需要做系统集成了,云原生API网关提供了SDK下载,可以在API详情页面直接下载该API下所有接口的调用代码。

5. 正式业务灰度迁移

通过严格的功能验证后,用户就可以逐渐将业务从原API网关迁移到云原生API网关了,整个迁移过程务必使用灰度方案,放缓迁移节奏,遇到问题时可随时将所有业务回滚到原API网关。目前建议用户通过修改正式业务域名解析权重的方式将生产业务逐渐迁移到云原生API网关。文档参考权重配置

  1. 在实例的基本信息页面找到云原生API网关实例的接入点域名。

  2. 将正式业务域名CNAME解析到云原生API网关实例的接入点域名,权重建议从1开始,之后逐步增加权重。

重要

务必注意控制新的CNAME解析的初始权重,强烈建议控制在1%以内,并观察24小时以上再继续扩大灰度范围。

  1. 业务观察

用户可以在实例的观测分析模块看到业务运行情况,具体请参考文档查看网关监控数据。业务观察没有异常就可以慢慢持续放开灰度范围。

  1. 回滚

如果灰度过程中发现异常,需要马上把之前在正式业务域名上添加的云原生API网关接入点的域名的CNAME解析直接删除了,先回滚恢复业务,后续问题解决再继续添加迁移。