在微服務架構與雲原生技術快速演進的背景下,漸進式交付(Progressive Delivery)成為確保服務穩定性與快速迭代的核心策略。EarnIn 作為一家擁有 400 萬用戶、每月處理 40 億 API 請求的財務科技公司,其在 2020 年遷移至 Kubernetes 後,逐步面臨部署流程複雜、監控不足與自動化程度低等挑戰。為解決這些問題,EarnIn 引入 Linkerd、Argo Rollouts 與 Gateway API 等 CNCF 生態工具,實現從傳統部署模式向漸進式交付的轉型。本文將深入探討其技術實踐與關鍵策略。
漸進式交付(Progressive Delivery)是一種透過控制流量切換與自動化測試,逐步將新版本服務推送到生產環境的策略。其核心方法包括:\n- Canary Release:將部分流量導向新版本,並根據指標(如錯誤率、延遲)決定是否全面上線。\n- Blue-Green Deployment:透過切換流量路由,實現零停機部署。\n- Rolling Update:逐步替換服務實例,降低風險。 這些方法的結合,使團隊能在保持服務穩定的同時,加速功能迭代。
Linkerd 是一個開源服務網格,提供流量控制、可觀察性與安全功能。EarnIn 遷移至 Linkerd 後,實現了以下關鍵特性:\n- 細粒度流量控制:透過 Gamma Initiator 支援 Canary 分割,並與 Gateway API 協同管理南北向與東西向流量。\n- 標準化流量管理:Gateway API 的 CRD(Custom Resource Definition)使負載平衡與路由配置更加統一,降低部署複雜度。\n- 內建可觀察性:Linkerd 提供的監控指標(如請求延遲、錯誤率)與日誌整合,提升故障排查效率。
Argo Rollouts 是 CNCF 生態中專注於進階交付的工具,其核心功能包括:\n- Canary 與 Blue-Green 支援:透過矩陣評估(Matrix Provider)自動分析指標,並根據預設閾值(如錯誤率 >10%)觸發回滾。\n- 流量比例配置:支援自定義 Canary 比例(如 20% 新版本 + 80% 穩定版本),並保留外部 URL 不變。\n- 與 Linkerd 協同工作:透過 Gateway API 設定 HTTP/GRPC 路由,實現流量切換與控制。
EarnIn 的技術整合架構包含以下核心元件:\n1. Argo CD:作為 GitOps 管線,確保配置與部署的可追蹤性。\n2. Argo Rollouts:實現 Canary 與 Blue-Green 部署策略,並與 Linkerd 協同管理流量。\n3. Linkerd:提供服務網格功能,支援流量控制與可觀察性。\n4. Gateway API:標準化負載平衡與路由配置,提升系統可擴展性。 流量控制流程如下:\n1. 服務配置 HTTP/GRPC 路由與後端引用。\n2. Argo Rollouts 控制流量比例(如 20% Canary / 80% Stable)。\n3. Matrix Provider 評估指標(如延遲率、錯誤率)並觸發回滾/進階。\n4. Linkerd 與 Gateway API 協同實現南北向與東西向流量管理。
EarnIn 透過以下步驟實現零停機遷移:\n1. 引用現有 Deployment 至 Rollout,並發佈兩個 Helm Chart Patch 版本。\n2. 第一版並行運行 Deployment 與 Rollout,確保服務連續性。\n3. 第二版完全切換至 Rollout,並透過 Helm Chart 版本控制淘汰原有 Deployment。 此過程需確保 Argo Rollout Controller 無阻礙執行,並與 Linkerd 的流量控制機制緊密協調。
為提升開發者效率,EarnIn 開發了以下工具:\n- Argo CD UI 插件:提供可視化部署進度(步驟、流量比例、自動 Canary 評估),並允許開發者直接配置 Canary 參數。\n- 內部開發平臺整合:開發者配置 Canary 參數後,觸發異步 Argo 工作流,並同步至 GitOps 倉庫,反饋結果至內部開發平臺。 此舉大幅降低平臺團隊幹預,提升自服務能力。
EarnIn 透過以下流程進行測試:\n1. 服務部署至沙箱環境,並透過 Argo CD 與 Linkerd 實現流量分割(20% Canary / 80% Stable)。\n2. 矩陣分析模板整合延遲率(如增加 10 秒即回滾)與錯誤率(如增加 10% 即回滾)。\n3. 模擬 3 次失敗部署,驗證回滾機制有效性。
EarnIn 的實踐表明,透過 Linkerd、Argo Rollouts 與 Gateway API 的整合,企業可有效實現漸進式交付,提升服務穩定性與部署效率。未來將持續優化工具鏈,並逐步擴展至更多服務層級。關鍵成功因素包括:\n- 建立標準化的流量控制與監控機制。\n- 提升開發者自服務能力,減少人工幹預。\n- 逐步擴展至基礎設施服務,實現全層次的漸進式交付。 此案例為企業在雲原生環境中實踐進階交付提供了可參考的技術路徑與實作策略。