从 3.8 LTS 升级到 3.10 LTS
部分 API7 网关运维人员会从 3.8 LTS 直接升级到 3.10 LTS,而不部署 3.9。本指南介绍经过验证的 3.8.23 到 3.10.6 路径。
对于就地升级,目标控制面(Control Plane,CP)会应用中间版本的数据库迁移,包括新的服务模型。目标 CP 健康后,在将 3.8.23 数据面(Data Plane,DP)节点替换为 3.10.6 节点期间,DP 会保持可用。对于双集群升级,源集群保持不变,同时构建独立的目标集群并逐步为其导入流量。安排任一策略前,请确认部署处于支持范围内。
适用范围
只有源版本、目标版本、数据库和部署方式符合以下边界时,才能自助执行直接升级。
| 范围 | 支持边界 |
|---|---|
| 版本线升级路径 | 按照本指南操作前,先将更早的 3.8.x 源版本升级到 3.8.23。 |
| 直接升级锚点 | 从 3.8.23 升级到 3.10.6 |
| CP 就地生产升级 | 使用本指南中的 Helm 和 Kubernetes 流程及外部 PostgreSQL 15.x。使用 Chart 内置 PostgreSQL、MySQL、Microsoft SQL Server 或其他数据库前,请联系 API7 支持团队。 |
| 双集群生产升级 | 使用两个独立的外部 PostgreSQL 15.x 数据库、下文列出的确切 Helm 和 Kubernetes 制品以及外部负载均衡器时,可自助执行。其他数据库或部署拓扑请联系 API7 支持团队。 |
| Helm 和 Kubernetes | 使用下文列出的确切发布制品。单副本和多副本 CP 部署都使用一个控制台副本执行迁移。网关发布使用 Deployment 工作负载(apisix.kind: Deployment)。 |
| 其他部署方式 | RPM、变更安装方式、DaemonSet 网关,或使用超出上述范围的 Helm Chart 与镜像组合时,请联系 API7 支持团队。 |
| CP 就地升级后的 DP 滚动升级 | 3.8.23 DP 的兼容性报告没有错误时,可能会报告 Partially Compatible。如果报告 Incompatible,请停止发布并按照文档执行回滚,或遵循 API7 支持团队的指导。 |
| 含结构性 DN 字符的 LDAP Auth | 需要 API7 支持团队协助。源 DP 和目标 DP 对受影响用户名要求不同的 user_dn 存储形式,因此方案必须协调目标值改写、流量切换和仅 DP 回滚。 |
| 开发者门户 | 现有身份和资源所有权需要 API7 支持团队批准的迁移方案。本指南不提供门户自助迁移流程。 |
该自助路径已使用以下发布制品完成验证:
| 组件 | 源版本 | 目标版本 |
|---|---|---|
| 控制面 | Chart 0.17.37,明确指定镜像 v3.8.23 | Chart 3.10.8,镜像 v3.10.6 |
| 数据面 | Gateway Chart 0.2.40,镜像 3.8.23 | Gateway Chart 3.10.13,镜像 3.10.6 |
Helm Chart 版本与产品版本相互独立。CP Chart 3.10.8 部署 API7 网关 3.10.6 组件,并不代表产品版本 3.10.8。
产品版本 3.10.6 中已知的控制台重启
将 3.8.23 PostgreSQL 数据库迁移到 3.10.6 后,第一个 3.10.6 控制台进程可能因 SQLSTATE 0A000 和 cached plan must not change result type 而终止一次。Kubernetes 会自动重启 Pod。由于 Schema 迁移已完成,替代进程可以完成启动。
此重启会延长管理功能中断时间,但现有 DP 会继续代理其最后一份有效配置。
只有以下条件全部满足时才能继续:
- 此前的日志包含上述确切错误,且没有无关的迁移失败。
- Pod 重启次数恰好为一次。
- 替代进程达到 Ready,报告 3.10.6,并且当前没有迁移错误。
- 所有必需资源都通过验证。