題目與範圍
遷移需要保留外部可觀察的狀態碼、路徑、回應標頭和後端選擇,從 Ingress 與控制器註解遷移到 Gateway API 資源。核心能力是代理邊界的相容性工程,因此分類為 backend。Kubernetes 部落格記錄了多個容易遺漏的行為,包括主機範圍的正規表示式影響、隱式重新導向和 URL 正規化。
面試官考察點
應先盤點真實流量行為,而非只做 YAML 翻譯。優秀回答會區分 Gateway API 的可移植語義與實作相關正規表示式,識別需要顯式過濾器表達的隱式行為,並提出差分測試和回滾方案。同時討論所有權、憑證與監聽器依賴、可觀測性和分階段 DNS 或流量切換。
先釐清的問題
- 部署中的 Ingress-NGINX 版本、註解、Gateway API 控制器和一致性級別是什麼?
- 哪些網域使用
use-regex、rewrite-target、認證、金絲雀或自訂片段? - 用戶端是否依賴 301、路徑大小寫、重複斜線或編碼片段?
- 新 Gateway 能否並行運行並接收鏡像或採樣流量?
- Gateway、HTTPRoute、後端策略和 TLS 資源分別由誰負責?
- 回滾觸發條件是什麼,多久能切回舊控制器?
30 秒答題框架
「先從清單、存取日誌和黑盒探針建立行為清單。按行為生成 Gateway API 資源,顯式建模正規表示式、重寫、重新導向和 TLS,不能假設註解可直接轉換。對舊、新控制器執行差分測試,灰度或鏡像流量,比較狀態碼、Location、後端收到的路徑和延遲,並保留 DNS 或流量回滾。只有沒有未解釋差異時才遷移單個網域。」
分步作答
步驟 1:盤點可觀察契約
解析每個網域和路徑,再用請求驗證。Ingress-NGINX 的正規表示式可能大小寫不敏感並按前綴匹配,同一註解還可能影響一個主機下多個 Ingress。把重新導向、正規化路徑、回應標頭、認證、逾時和後端選擇記錄為可測試契約。
步驟 2:區分可移植與控制器特性
把普通主機/路徑路由映射到 Gateway 和 HTTPRoute。正規表示式匹配屬於實作相關能力,必須驗證目標控制器語義。支援時用 HTTPRoute 過濾器顯式表達重寫和重新導向;不支援的註解或片段要成為有負責人的遷移阻塞項。
步驟 3:建立差分測試矩陣
每個契約都測試正常和對抗路徑:大小寫變化、結尾斜線、.、..、重複斜線、編碼字元、缺失路由和後端故障。比較狀態碼、Location、後端收到的路徑、回應標頭、服務選擇和錯誤正文。兩套控制器使用相同夾具和請求標頭。
步驟 4:證明控制器和策略就緒
檢查 Gateway、HTTPRoute 的狀態條件、監聽器附著、憑證就緒、跨命名空間引用策略,以及每個過濾器的實作支援。資源被 API 接受,並不代表資料面實作了全部請求能力。
步驟 5:灰度與回滾
讓新 Gateway 並行運行,從少量網域或流量切片開始。可行時只鏡像冪等請求,否則重放脫敏夾具。出現未解釋的路由差異、4xx/5xx 變化、重新導向漂移或延遲回歸就中止。觀察窗口結束前保留舊控制器和 DNS 或流量權重。
參考答案
「我會把現有 Ingress-NGINX 行為視為外部契約。盤點清單、註解、日誌和探針後,按契約顯式建模 Gateway 與 HTTPRoute。正規表示式、重寫、結尾斜線重新導向和 URL 正規化需要驗證控制器語義,隱式行為要轉成顯式過濾器。建立差分矩陣比較狀態碼、Location、後端路徑、回應標頭和服務選擇,再帶回滾地灰度。狀態條件和一致性聲明只是必要條件,最終要以黑盒證據作為發布門檻。」
常見錯誤
- 逐項翻譯 YAML → 註解可能帶有隱藏的主機範圍影響 → 盤點執行時行為並測試。
- 認為
Exact匹配完全相同 → 舊控制器可能有正規表示式或正規化副作用 → 探測大小寫、斜線和編碼變體。 - 只依賴資源 Accepted → 資料面支援仍可能不完整 → 檢查條件並驗證黑盒回應。
- 先切 DNS → 回滾變慢且不可見 → 舊路徑可用時先做流量灰度。
- 忽略後端可見路徑 → 重寫會破壞應用 → 斷言後端收到的路徑和回應標頭。
- 只測正常請求 → 重新導向和異常 URL 可能導致故障 → 加入負例和對抗夾具。
追問
追問 1:正規表示式遷移為什麼會改變流量?
Ingress-NGINX 可能對同一主機下路徑套用大小寫不敏感的前綴式正規表示式。Gateway API 的正規表示式是實作相關的,而 Exact、Prefix 不會靜默變成正規表示式。
追問 2:如何保留結尾斜線重新導向?
用 HTTP 重新導向過濾器顯式建模,並測試有無斜線兩種請求。不能假設 Gateway 自動添加舊的 301。
追問 3:什麼是安全回滾信號?
固定基線和觀察窗口內,出現未解釋的狀態碼、Location、後端路徑、服務選擇、錯誤率或延遲差異即可回滾。
追問 4:遷移工具能證明什麼?
轉換器可以加速盤點並生成候選資源,但不能證明控制器特性、註解互動或應用相容性。差分測試仍應是發布門檻。