作者:澄潭

編者按: Ingress NGINX 退役引發開發者們的強烈關注,《遺憾,Ingress NGINX 要退役了》。

官方已經提供了完備的應對措施,遷移到 Gateway API,以及20+ Ingress 控制器。但實施遷移的時候,企業還會希望瞭解新的 Ingress 控制器是否兼容 Ingress NGINX 的註解,遷移過程中如何進行灰度切流,遇到流量損失如何快速回滾等,以保障遷移過程平滑,不影響線上業務。

因此,本文將提供基於實操的應對方案,以阿里云云原生 API 網關(Higress 企業版)為例,按步驟詳細闡述遷移的操作過程。此外,歡迎參與文末調研,瞭解各企業的遷移計劃。

概述

隨着 Nginx Ingress 逐步停止維護,用户需要將其遷移至新的網關方案。雲原生 API 網關是阿里雲 API 網關的子產品,統一了流量網關、微服務網關和安全網關 ,為 Nginx Ingress 用户提供了平滑的遷移路徑和強大的功能升級。

雲原生 API 網關提供兩種核心配置模式,以適應不同的管理需求和使用場景:

1. 監聽 K8s Ingress(Ingress 模式): 網關作為 APIG Ingress Controller 運行,兼容 K8s Ingress 資源及 Nginx Ingress 註解 [ 1] ,適用於希望保持 K8s 原生工作流(如 GitOps)的團隊 。

2. 控制枱配置 API(API 管理模式): 通過阿里雲控制枱或 API 進行配置,提供完整的 API 生命週期管理、高級安全策略和 API 運營能力,適用於需要集中治理和精細化管理的場景。

本文檔將詳細對比這兩種模式的功能、優勢及適用場景,以幫助您選擇最適合的配置路徑。

模式一:監聽 K8s Ingress(Ingress 模式)

此模式將雲原生 API 網關部署為 Kubernetes 集羣的 Ingress Controller,用於管理集羣的南北向流量。

1.1 核心優勢與適用場景

  • 平滑遷移: 為 Nginx Ingress 用户提供一鍵式遷移工具 [ 2] ,最大程度降低遷移成本和業務中斷風險。
  • 保持 K8s 原生工作流: 完全兼容 K8s Ingress 資源和註解,團隊可以繼續使用 kubectl apply、GitOps 等現有工作流來管理路由規則。
  • 功能增強: 在兼容 Nginx Ingress 的基礎上,提供了更強大的治理能力,如全侷限流 [ 3] 等。

適用場景

  • Nginx Ingress 的存量用户遷移。
  • 以 K8s 為中心、依賴 GitOps 流程管理應用發佈的團隊。
  • 需要快速實現集羣流量路由和基礎治理的開發運維團隊.

1.2 功能詳情

APIG Ingress Controller 支持的完整 Ingress 能力請參考:

《APIG Ingress 支持的 Annotation》:

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/annotations-supported-by-apig-ingress-gateways

《APIG Ingress 高級用法》:

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/advanced-usage-of-apig-ingress

1.2.1 高度兼容 Nginx Ingress 註解

APIG Ingress(雲原生 API 網關的 Ingress Controller)支持絕大多數 Nginx Ingress 註解(據統計支持 51 種,覆蓋 90% 的用户場景)。這意味着現有的 K8s Ingress YAML 文件無需大量修改即可遷移。

關鍵兼容註解示例

一步到位!阿里云云原生 API 網關,助力 Nginx Ingress 用户實現高效、安全遷移_API

1.2.2 獨有的功能增強(Higress 註解)

此模式不僅兼容 Nginx,還通過 higress.ingress.kubernetes.io/ 前綴註解提供了 Nginx Ingress 所不具備的高級功能,舉例來説:

流量預熱

  • Nginx 的問題:無法實現此能力。
  • APIG Ingress 解決:提供原生的 higress.ingress.kubernetes.io/warmup 註解,可以保證新節點上線時,流量在指定預熱窗口內是逐步調大,充分保證新節點完成預熱。

全侷限流

  • Nginx 的問題:nginx.ingress.kubernetes.io/limit-rps 實現的是單 Pod 限流,總限制等於“限流值 x Pod 數量”,難以精確控制。
  • APIG Ingress 解決:higress.ingress.kubernetes.io/rate-limit 提供的是跨所有網關實例的全侷限流,可精確控制總 QPS。

全局併發控制

  • Nginx 的問題:缺乏簡單有效的全局併發數控制。
  • APIG Ingress 解決:higress.ingress.kubernetes.io/concurrency-limit 提供全局併發數限制,保護後端服務免受瞬時流量衝擊。

流量鏡像

  • Nginx 的問題:缺乏流量鏡像能力,需要寫 Lua 腳本。
  • APIG Ingress 解決:提供原生的 higress.ingress.kubernetes.io/mirror-target-service 註解,可便捷地複製流量到測試服務,用於生產環境的影子測試。

模式二:控制枱配置 API(API 管理模式)

此模式將雲原生 API 網關作為一箇中心化的 API 管理平台。用户通過阿里雲控制枱(或 API/Terraform)來定義和管理 API,實現從路由轉發到 API 治理的全面升級。

2.1 核心優勢與適用場景

  • 集中化治理: 允許平台團隊、架構師或安全團隊從統一視圖管理所有 API,強制執行安全、合規和流量策略。
  • 全生命週期管理: 支持 API 從設計、開發、測試、發佈到下線的完整生命週期,包括版本控制、發佈審計和一鍵回滾。
  • 高級安全能力: 原生集成複雜的認證機制(如 OIDC,JWT,自建認證鑑權)。
  • API 運營與生態: 支持 API 的消費者管理 、訂閲關係和調用配額,賦能API經濟。

適用場景

  • 需要對 API 進行精細化、集中化治理的企業。
  • 對 API 安全身份認證有高要求的業務。
  • 需要管理 API 版本、進行灰度發佈和審計的團隊。
  • 構建開放平台,需要管理第三方開發者(消費者)及其調用配額的場景。

2.2 功能詳情

2.2.1 完整的 API 生命週期管理
支持 API 的設計、開發、測試、發佈及下線全週期管理 。關鍵功能包括:
  • 版本管理: 支持 API 的多個版本(如 v1, v2)同時在線,並可管理其發佈狀態。
  • 發佈與回滾: 提供 API 的發佈歷史記錄,支持一鍵回滾到任一歷史版本。
2.2.2 高級的企業級安全

提供遠超 Ingress 模式的基礎安全能力,將複雜的認證邏輯從後端服務中剝離:

  • 豐富認證鑑權: 原生支持 JWT、OIDC,並能與阿里雲 IDaaS(應用身份服務)集成。
  • 多層防禦: 深度集成 WAF(Web 應用防火牆)、支持 mTLS 雙向認證、IP 黑白名單及自定義安全插件。
2.2.3 強大的可擴展性
  • 插件市場: 提供豐富的官方插件(覆蓋認證、安全、流量等),並支持用户上傳自定義插件。
  • 熱更新: 網關支持插件和配置的熱更新,無需重啓實例,保障業務高可用。
2.2.4 API 運營與多源服務發現
  • API 生態: 提供“消費者管理”功能,可管理 API 的調用配額和訂閲規則。
  • 多源發現: 後端服務不僅限於 K8s 集羣,還支持從 Nacos、函數計算(FC)以及固定地址/域名等多種來源發現服務。

模式對比總結

下表總結了兩種配置模式在關鍵維度的差異:

一步到位!阿里云云原生 API 網關,助力 Nginx Ingress 用户實現高效、安全遷移_限流_02

如何選擇:推薦的遷移與演進路徑

場景一:平滑遷移

  • 適用對象: 優先考慮遷移速度、希望保持現有 K8s 工作流的團隊。
  • 推薦方案: 採用模式一:K8s Ingress 模式
  • 實施:
  1. 使用官方遷移工具將 Nginx Ingress 配置遷移至雲原生 API 網關。
  2. 審查遷移報告,處理少量不兼容註解(可提交工單諮詢)。
  3. (可選)使用 higress.ingress.kubernetes.io/註解替換原有配置,以啓用全侷限流等高級功能。

場景二:新業務架構

  • 適用對象: 構建全新的 API 平台,或對安全、治理有高要求的企業。
  • 推薦方案: 採用模式二:控制枱 API 模式。
  • 實施:
  1. 在控制枱定義 API、配置安全策略(如 OIDC/JWT)和限流策略。
  2. 使用網關的服務發現能力,將 API 後端指向 ACK 集羣中的 Service或其他服務來源。

場景三:漸進式演進(推薦策略)

  • 適用對象: 絕大多數組織,既要解決存量遷移問題,又希望逐步提升治理能力。
  • 推薦方案: 從模式一開始,逐步演進到模式二。
  • 實施:
  1. 第一步(遷移):首先採用模式一(Ingress),完成所有 Nginx Ingress 的平滑遷移,快速解決 Nginx EOL 問題。
  2. 第二步(治理):識別出組織內的核心 API(例如:對外的、高安全等級的、需精細化管理的 API)。
  3. 第三步(演進):將這些核心 API 逐步“納管”到模式二(控制枱)。您可以在控制枱為這些 API 配置 JWT 認證、WAF 防護、消費者配額 等高級策略,而其他非核心 API 可以繼續保留在模式一中運行。
路由優先級説明:

對於相同域名和相同路徑的路由,控制枱創建的 API 優先級會高於 Ingress 方式同步的路由,因此遷移過程中可以逐個在控制枱上進行配置,如果發現有問題,也可以通過刪除控制枱配置立即恢復到 Ingress 模式。

注意: 優先級是基於單個路由粒度的,不是整個域名。這意味着:

  • 可以對某個域名下的部分路徑使用控制枱配置,其他路徑繼續使用 Ingress
  • 控制枱配置的路由僅覆蓋匹配條件相同的 Ingress 路由
  • 建議按路徑逐步遷移,而不是一次性遷移整個域名的所有路由

可以通過例子,更容易理解這個優先級機制:

場景: 您有一個域名 example.com,需要從 Ingress 逐步遷移到控制枱配置。

1. 初始狀態(僅 Ingress 配置)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service-v1
            port:
              number: 8080
      - path: /web
        pathType: Prefix
        backend:
          service:
            name: web-service-v1
            port:
              number: 80

此時 API 網關自動生成的路由為:

  • /api → api-service-v1:8080
  • /web → web-service-v1:80

2. 遷移中(控制枱配置 /api 路徑)

在控制枱為 example.com 創建路由,配置 /api 指向新版本服務 api-service-v2:8080

此時合併後的實際路由順序為:

1. /api → api-service-v2:8080  (控制枱配置,優先匹配) ✅
2. /api → api-service-v1:8080  (Ingress 配置,不會匹配到)
3. /web → web-service-v1:80    (Ingress 配置,正常生效)

效果:

  • 訪問 example.com/api/* → 路由到 api-service-v2(控制枱配置生效)
  • 訪問 example.com/web/* → 路由到 web-service-v1(Ingress 配置生效)

3. 發現問題,快速回退

如果發現 api-service-v2 有問題,只需在控制枱刪除 /api 路由配置。

刪除後的路由順序:

1. /api → api-service-v1:8080  (Ingress 配置,立即恢復) ✅
2. /web → web-service-v1:80    (Ingress 配置)

效果: 流量立即回退到 Ingress 配置的 api-service-v1,無需修改 Ingress 或重啓任何服務。

4. 完全遷移(控制枱配置所有路徑)

在控制枱繼續配置 /web 路徑後:

1. /api → api-service-v2:8080  (控制枱配置) ✅
2. /web → web-service-v2:80    (控制枱配置) ✅
3. /api → api-service-v1:8080  (Ingress 配置,不會匹配到)
4. /web → web-service-v1:80    (Ingress 配置,不會匹配到)

此時所有流量都由控制枱配置控制,可以安全刪除對應的 Ingress 配置。

瞭解更多:

點擊此處瞭解商業方案阿里雲 API 網關詳情

點擊此處瞭解開源方案 Higress 詳情

企業遷移計劃調研:

請在手機微信公眾號投票

您是否有 Nginx Ingress 遷移計劃? (單選)

  • 有遷移打算,但還沒制定遷移目標和計劃
  • 有遷移打算,2025年底前完成遷移
  • 有遷移打算,Nginx Ingress正式退役前完成遷移
  • 沒遷移打算,繼續使用,風險自擔

相關鏈接:

[1] Nginx Ingress 註解

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/annotations-supported-by-apig-ingress-gateways

[2] 一鍵式遷移工具

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/migrating-from-nginx-ingress-to-cloud-native-api-gateway

[3] 全侷限流

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/advanced-usage-of-apig-ingress?spm=a2c4g.11186623.help-menu-29462.d_2_10_2.13d16ab7JSrjZM#862f08d03d4d3