从 3.9 LTS 升级到 3.10 LTS
API7 网关 3.9 LTS 可以直接升级到 3.10 LTS。本指南介绍经过验证的 3.9.19 到 3.10.6 路径,适用于使用外部 PostgreSQL 数据库的 Helm 和 Kubernetes 部署。
对于就地升级,一个目标控制面(Control Plane,CP)控制台会迁移现有数据库。目标 CP 健康后,3.9.19 数据面(Data Plane,DP)节点会继续承载流量,同时逐步添加、验证并启用 3.10.6 节点。对于双集群升级,源集群保持不变,同时构建独立的目标集群并逐步为其导入流量。
适用范围
只有源版本、目标版本、数据库和部署方式符合以下边界时,才能自助执行直接升级。
| 范围 | 支持边界 |
|---|---|
| 版本线升级路径 | 按照本指南操作前,先将更早的 3.9.x 源版本升级到 3.9.19。 |
| 直接升级锚点 | 从 3.9.19 升级到 3.10.6 |
| CP 就地生产升级 | 使用本指南中的 Helm 和 Kubernetes 流程及外部 PostgreSQL 15.x。使用 Chart 内置 PostgreSQL、MySQL、Microsoft SQL Server 或其他数据库前,请联系 API7 支持团队。 |
| 双集群生产升级 | 使用两个独立的外部 PostgreSQL 15.x 数据库、下文列出的确切 Helm 和 Kubernetes 制品以及外部负载均衡器时,可自助执行。其他数据库或部署拓扑请联系 API7 支持团队。 |
| Helm 和 Kubernetes | 使用下文列出的确切发布制品。网关发布使用 Deployment 工作负载(apisix.kind: Deployment)。 |
| 其他部署方式 | RPM、变更安装方式、DaemonSet 网关,或使用超出上述版本范围的 Chart 与镜像组合时,请联系 API7 支持团队。 |
| CP 就地升级后的 DP 滚动升级 | 3.9.19 DP 连接 3.10.6 CP 时,如果兼容性错误为零,可能会报告 Partially Compatible。任何源 DP 报告 Incompatible 或非预期兼容性错误时,都要停止升级。 |
| 含结构性 DN 字符的 LDAP Auth | 需要 API7 支持团队协助。源 DP 和目标 DP 对受影响用户名要求不同的 user_dn 存储形式,因此方案必须协调目标值改写、流量切换和仅 DP 回滚。 |
| 开发者门户 | 需要 API7 支持团队协助。本指南不提供门户前端、身份、组织或资源所有权迁移的自助流程。 |
该自助路径已使用以下发布制品完成验证:
| 组件 | 源版本 | 目标版本 |
|---|---|---|
| 控制面 | Chart 3.9.7,镜像 v3.9.19 | Chart 3.10.7,镜像 v3.10.6 |
| 数据面 | Gateway Chart 3.9.11,镜像 3.9.19 | Gateway Chart 3.10.13,镜像 3.10.6 |
Helm Chart 版本与产品版本相互独立。在此路径中,CP Chart 3.10.7 部署 API7 网关 3.10.6 组件,并不代表产品版本 3.10.7。
数据库还必须满足支持的版本和互操作性中列出的目标版本要求。
查看兼容性变更
查看从 3.10.0 到 3.10.6 的发布说明时,请以 3.9.19 作为源基线。对于 3.10.6 中行为发生变化的功能,请完成相应升级操作。
此升级路径需要处理以下变更:
- 服务模型迁移: Service Template、Service Hub 发布、服务版本和服务回滚功能已移除。发布并验证必须保持活动状态的配置,并归档需要留存备查的草稿或历史版本。迁移后,验证服务、路由、上游、OpenAPI 文档、API 产品链接和 IAM 策略。
- 自定义插件迁移: 上传的自定义插件会改为以网关组为作用域。清点源文件、当前使用情况、必须列出或读取插件源代码的角色,以及调用自定义插件 API 的自动化。将
/api/custom_plugins调用替换为/api/gateway_groups/{gateway_group_id}/custom_plugins,将gateway_group_id添加到GET /api/plugins,并从自定义插件载荷中移除gateway_groups。迁移后,验证每个必需的网关组都分配了预期插件,并确认第一个目标 DP 能成功加载插件。现有自定义插件策略授权会被迁移,但以前无需明确权限即可读取插件源代码的角色,需要对相应网关组授予gateway:GetCustomPlugin。在切换生产流量前,使用受影响的自动化测试目标版本的列表和上传操作,并使用只读用户验证访问权限。 - 网关运行时: 网关从 OpenResty 1.21.4.4 升级到 1.29.2.4。使用 3.10.6 镜像测试自定义插件、NGINX 代码片段、模块和运维脚本。
- 身份认证和密钥: 在目标灰度节点上测试每一种身份认证流程和凭证类型。只要仍有 3.9.19 DP,就要保持管理写入冻结,因为源 DP 可能无法读取仅目标版本支持的字段和新加密的值。
- LDAP Auth 可分辨名称: 升级前,清点
user_dn中用户名包含 LDAP 可分辨名称结构字符(例如,、+、=、<、>、;、"或\)的消费者。将当前纯字符串值保存在源备份中,并且在 3.9.19 DP 承载流量期间不要改写这些值。如存在受影响的消费者,请获取 API7 支持团队方案,安排在切换到目标 DP 时执行 RFC 4514 改写,并在仅 DP 回滚前恢复原始值。Schema 验证和兼容性报告无法检测这种不匹配。
升级 DP 前,请针对每个网关组运行目标兼容性报告。ADC lint 和 diff 只能作为配置检查,不能证明运行时兼容性。