由于 Ingress NGINX Controller 正式进入退役流程,继续使用 Nginx Ingress 会在扩展性、安全性、稳定性上逐渐产生风险。为保证您的业务安全,建议及时将集群中的 Nginx Ingress 切换为其他路由策略。本文介绍如何在保证业务安全的前提下,将 Nginx Ingress 迁移到 APIG Ingress。
- 安全隐患:无法获取后续安全补丁,易暴露于未修复的漏洞风险中。
- 功能瓶颈:不再迭代新特性,难以支撑业务对高级 API 治理(如限流、熔断)、多协议支持(gRPC、WebSocket)等复杂场景的需求。
- 长期稳定性风险:缺乏官方技术支持,遇到问题时难以快速解决,影响业务连续性。
APIG Ingress 作为 Nginx Ingress 的替代方案,具备天然的迁移优势:
- 高兼容性降低成本:支持 Nginx Ingress 的核心资源结构、常见注解、路径规则及 TLS 配置。迁移成本低,能够减少配置改写工作量。
- 增强业务能力:与 Nginx Ingress 相比,APIG Ingress 提供更全面的 API 治理能力(限流、鉴权、灰度发布)、全生命周期管理(版本控制、发布流程)及跨集群流量调度等特性,满足业务长期发展需求。
- 专业的研发支撑团队:APIG 团队具有丰富的云原生流量治理经验,能为用户提供持续、稳定的支撑。
某用户使用 VKE 集群部署在线业务,通过 Nginx Ingress 配置路由转发规则,包括域名和路径的转发策略。并使用 DNS 完成自定义域名(本文中以 example.com 为例)的解析。客户端访问域名 example.com 时,Nginx Ingress 接收到请求会根据转发策略,将流量转发至对应 Service 的后端 Pod 上。
基于业务发展需要和维护性、安全性考虑,该用户需要将 Nginx Ingress 迁移到 APIG Ingress上。为了保持业务稳定,希望不改变对外提供服务的域名及后端服务器的 IP 地址。此时,可以通过在 VKE 集群上配置 APIG Ingress,使 APIG Ingress 提供的转发策略与 Nginx Ingress 一致,然后利用 DNS 域名解析的权重设置完成流量的迁移。
迁移后,当将流量完全转移至 APIG Ingress 后,删除 DNS 解析中的 Nginx Ingress 解析记录,并删除集群中的 Nginx Ingress 资源,整个流程客户端无感。
注意
- 流量迁移前,请首先对比 Nginx Ingress 和 APIG Ingress 的转发规则和功能,并进行充分测试,确保两者功能完全一致,避免切换过程中对业务造成影响。如发现 APIG 支持的功能或注解不满足业务要求,请 提交工单 或联系技术支持。
- 使用 APIG 云产品会产生额外费用,详情请参见 计费概述。
- 在左侧导航栏选择 实例管理,在实例管理页面,单击 创建实例,创建一个公网类型的 APIG 实例。配置步骤和参数详情,请参见 创建实例。
- 单击 APIG 实例名称,进入 APIG 实例配置页面。
- 在左侧导航栏选择 容器集群导入,单击 导入集群,导入目标集群,并监听集群中的 Nginx Ingress 资源。
- 开启 路由同步 功能,在 指定 ingressClass 配置项中选择 自定义范围,并在 IngressClass 文本框内输入集群中 Nginx Ingress 的ingressClassName字段值,本文以 nginx 为例。
-
- 执行以下命令,确认能够通过 APIG 实例访问集群后端服务。其中,118.xxx.xxx.xxx为 APIG 实例的访问入口 IP 地址,您可以使用 APIG 实例的默认 IP 地址,也可以自定义 IP 地址。详情请参见 添加访问入口。
- 预期反馈如下,可以通过 APIG 的入口 IP 地址访问集群的后端服务。
流量迁移前,假设您已将业务域名通过 A 记录解析的方式指向了 Nginx Ingress 的公网地址。此时,您可以在原 DNS 纪录中新增 APIG 实例的 IP 地址,并逐步将访问原 Nginx Ingress 的流量切换至 APIG Ingress。
本文以火山引擎域名管理产品为例。
- 在域名列表中单击目标域名名称,进入域名详情页面。
- 编辑目标解析记录,在其中添加 APIG 实例的访问入口 IP 地址。
-
- 完成配置后,验证并观察业务流量是否正常,确认流量已被转发至新的 APIG Ingress,并无异常产生。
流量通过 APIG Ingress 正确转发,同时 Nginx Ingress 长连接全部处理完成后,您可以根据业务场景静默观察一段时间后释放冗余资源。
- 删除域名解析记录中的 Nginx Ingress。待超过 DNS 缓存时间后,新的请求将全部切到 APIG 实例上。
- 使用容器服务集群 云原生观测 中的 Ingress 服务观测 功能,持续监控 Nginx Ingress 上的流量,待流量归零后,即可删除集群中的 Nginx Ingress 资源。
在迁移过程中,如果您遇到一些 APIG Ingress 当前暂不支持的 Nginx 特有注解。建议遵循以下迁移策略和操作建议。
- 对于支持在控制台配置,但暂不支持通过注解配置的功能。建议登录 API 网关控制台,使用控制台完成相关配置。
警告
对于当前 APIG 不支持的注解,不建议直接使用 YAML 进行配置。控制台配置下发配置或 ingress-controller 组件重启/更新时,会导致此类自定义配置丢失。
- APIG 产品会持续丰富 Nginx 注解兼容能力,满足客户需求。对于控制台和注解均不支持的配置,如有需求,可以 提交工单 或联系技术支持。
如果在流量迁移过程中或迁移后,发现 APIG 实例异常,可以进行流量迁移回退。回退是迁移的逆流程,其基本原理与迁移一致,即通过控制域名解析地址,由 APIG 实例入口 IP 变更为 Nginx Ingress 相关 IP 地址来实现无损回退。