想降低 Kubernetes 上線風險,卻仍靠人工盯監控? Argo Rollouts 是 CNCF Argo 生態系中的 Kubernetes Progressive Delivery Controller,透過 Rollout CRD 提供 Canary 與 Blue-Green 部署,並可結合流量管理與指標分析,自動控制版本晉級或回滾。讓發布從人工經驗,變成可量測的工程流程,與 ArgoCD、Kargo 整合,協助 DevOps 打造安全的發布流程。
快速閱讀導引 - Argo Rollouts 是什麼? Kubernetes 漸進式交付的自動化引擎
如何讓新版本以可控制、可量測的方式逐步接收真實流量,並在發現異常時自動停止或回滾。
ArgoCD 可以確保 Kubernetes 叢集狀態與 Git 保持一致,Deployment 也能完成新版本的 Rolling Update;但即使所有 Pod 都是 Running、健康檢查全部通過,也不代表新版本在真實使用情境下完全沒有問題。
例如,一個新版本可能只有在特定商品組合、付款方式或高流量情境下才出現錯誤。此時,單純確認 Pod 是否健康,仍不足以判斷「這一版是否值得繼續放量」
而 Kubernetes 原生 RollingUpdate 主要控制的是新舊 Pod 的數量比例,並非真正的使用者流量比例,也無法單獨依據應用程式指標判斷是否應該繼續發布。
因此,企業需要的不是單純「部署成功」,而是進一步建立:
部署
→
小流量驗證
→
指標分析
→
自動晉級 / 暫停 / 回滾
這就是 Kubernetes Progressive Delivery (漸進式交付)要解決的問題。
降低 Kubernetes 發布風險的兩種部署策略
在 Progressive Delivery 中,藍綠部署( Blue-Green Deployment )與金絲雀部署 ( Canary Deployment )是兩種常見策略。
1. 藍綠部署 | Blue-Green Deployment
Blue-Green Deployment 會同時維運兩套完整環境:
- Blue 藍色:目前正式線上版本
- Green 綠色:準備發布的新版本
新版本先在綠色環境完成部署與驗證,確認無誤後,把流量一次性從藍切到綠。
Blue-Green Deployment 如何運作?
基本流程為:
1. Blue 版本持續提供正式服務
2. 部署 Green 新版本
3. 在 Green 環境進行驗證
4. 將正式流量切換至 Green
5. 發現問題時,將流量切回 Blue
Blue-Green Deployment 的優點
• 新舊版本環境清楚分離
• 切換速度快
• 回滾相對直接
• 驗證環境與正式環境可以保持一致
Blue-Green Deployment 的限制
最大問題是:切換通常仍然是一次性的全量切換。如果問題只有在真實流量進入後才會出現,那麼從第一秒開始,可能就是 100% 的使用者受到影響。此外,企業也需要額外維持新舊兩套環境所需要的資源。
2. 金絲雀部署 | Canary Deployment
Canary Deployment 的核心概念是:不要一次把所有流量交給新版本,而是先讓少量真實流量驗證新版本。
例如:5% → 25% → 50% → 100%當新版本接收 5% 流量後,系統可以觀察: Error Rate、Success Rate、P99 Latenc、 Application Metrics ,如果指標正常,再增加流量。如果指標異常,則停止發布或回滾。
Canary Deployment 如何運作?
基本流程為:
1. 原版本持續提供正式服務
2. 部署少量新版本服務
3. 依照設定 分流部分流量至新版本服務
4. 監測指標正常,逐步增加新版本流量
5. 新版本流量至100%,刪除舊版本服務
Canary Deployment 的優點
Canary 的最大價值是:將故障影響範圍控制在有限比例內。
如果新版本在 5% 流量階段就發生問題,企業可以在問題擴大之前停止發布。這使發布從一次性的風險事件,變成一個可以逐步驗證的實驗。
Canary Deployment 的限制
Kubernetes 原生並沒有提供這個能力。要落地就得自己處理流量切分、指標觀測、晉級與回滾判斷——最後往往變成「人工盯著看,覺得沒問題就按下一步」。
金絲雀 ( Canary ) 與藍綠 (Blue-Green) 兩種部署策略怎麼選?
-
希望控制影響範圍
-
希望逐步增加真實流量
-
希望依 Metrics 自動判斷
-
希望快速切換新舊版本
-
希望快速 Rollback
Argo Rollouts 是什麼 ?
Argo Rollouts 是 CNCF Argo 生態系中的 Kubernetes Progressive Delivery 工具。
它以 Kubernetes Controller 的形式運作,提供 Rollout Custom Resource Definition(CRD),作為 Kubernetes Deployment 的替代資源。對 Kubernetes 叢集而言,Rollout 同樣管理 ReplicaSet 與 Pod ; 不同的是,它將:
- Canary
- Blue-Green
- Traffic Management
- Analysis
- Promotion
- Rollback
變成可以透過 Kubernetes Manifest 宣告與自動執行的發布策略。換句話說:過去寫在發布 SOP 裡、需要工程師手動執行的步驟,現在可以變成 Kubernetes 自己執行的程式碼。
Argo Rollouts 如何運作?
Rollout CRD:把發布策略寫進 Kubernetes
Rollout 是 Kubernetes Custom Resource。因此企業可以直接在 Manifest 中定義:
- Rollout Strategy
- Canary Steps
- Traffic Splitting
- Pause
- Analysis
- Rollback
這種方式與 GitOps 的宣告式管理模式高度契合。
過去寫在發布 SOP 文件裡、靠人執行的步驟,現在變成叢集自己會執行的程式碼。
圖片來源:Argo Rollouts 官方文件
透過架構圖可以看到三條線:Rollout Controller 同時管理一組 Canary 與一組 Stable ReplicaSet;流量從 Service 進來後依設定的比例分流(圖中為 20% / 80%);同時 AnalysisRun 依照 AnalysisTemplate 的定義,向 Prometheus 等監控來源查詢指標,決定這次發布該繼續推進、還是就地回滾。(圖片來源:Argo Rollouts 官方文件)
Argo Rollouts 核心功能亮點
圖形化介面:發布進度看得見
Argo Rollouts 提供獨立的 Dashboard 與 kubectl plugin,把發布過程完整視覺化:目前走到第幾階段、流量比例多少、新舊版本各有多少 Pod、分析結果通過或失敗,一個畫面就看得完;需要人工介入時,也可以直接在介面上執行晉級 (Promote) 或中止(Abort)。
看似只是介面問題,實際影響的是決策速度。工程師不再需要用 kubectl get pods 拼湊發布現況、手動比對 Ingress 權重;當狀況發生、需要有人裁定「繼續還是中止」時,所有關係人依據的是同一份即時畫面。跨團隊溝通不再是反覆確認「現在進度到哪」,而是打開儀表板即可判讀——而那段來回確認所耗費的時間,往往就等於停機時間本身。
Analysis Template:讓數據決定發布成敗
這是 Argo Rollouts 最關鍵的能力。AnalysisTemplate 讓你把「什麼叫做健康」寫成可執行的判斷式:從 Prometheus、Datadog、New Relic、CloudWatch 等來源查詢指標(錯誤率、延遲 P99、成功率),設定通過門檻,並在金絲雀的每一個階段自動執行。指標達標,自動晉級到下一個流量比例;指標異常,立即自動回滾。
真正的價值在於,原本只存在於資深工程師腦中的判斷標準,變成了寫在 Git 裡、可審查、可版本控制、可跨團隊複用的資產。發布不再需要有人守著螢幕,異常也不必等到客訴進來才被發現——問題在流量還只有 5% 的時候就被攔下,有助於縮短異常發現與處置所需的時間。
精細流量控制:把影響半徑縮到最小
原生 Deployment 只能透過 Pod 數量間接影響流量分配。Argo Rollouts 則直接整合流量層——Istio、Linkerd、NGINX Ingress、AWS ALB、Traefik 等——真正以流量為單位做切分。
流量權重由 Rollout 統一宣告,不必再手動操作 Ingress 或 VirtualService。更重要的是,影響半徑從此是一個可以被事先定義的數字,而不是每次發布後才知道的結果。反過來看,同樣的機制也讓新功能能夠先在可控範圍內驗證真實成效,再決定是否全面放行——發布從一場賭注,變成一次可以收斂的實驗。
圖為 Argo Rollouts 官方 rollouts-demo 範例應用程式(非 Rollouts 操作介面):每個方塊代表一次請求,紅色為舊版本、綠色為新版本,可直觀看出流量隨金絲雀階段由舊版逐步轉移至新版。
與 GitOps 交付鏈整合
Argo Rollouts 處理的是單一環境內的漸進式發布;而版本如何從 dev 一路推進到 production,則是跨環境的推進(Promotion)課題。
兩者可以無縫串接:由 Kargo 這類 Continuous Promotion 工具決定「哪一版、在什麼條件下、進到哪個環境」,版本進入環境之後,再由 Argo Rollouts 執行金絲雀發布;而 Kargo 的 Verification 機制,本身就直接沿用 Argo Rollouts 的 AnalysisTemplate。對多團隊、多環境的組織而言,這條鏈路構成了完整的交付治理。
圖片來源:Kargo 官方文件
Argo Rollouts 適合哪些企業與應用場景?
Argo Rollouts 特別適合需要控制 Production Release Risk 的 Kubernetes 環境。
• SaaS 平台
• 電商服務
• 金融交易服務
• 高可用性服務
• 高流量 Web 應用
• API Service
• 微服務架構
• 高頻率部署的 DevOps 團隊
• 已導入 Kubernetes/GitOps 的企業
• 需要建立 Platform Engineering 的企業
尤其當團隊開始遇到:「部署已經自動化,但發布決策還是靠人。」就是很值得評估 Progressive Delivery 的時機。
羽昇專家觀點:Progressive Delivery 不只是自動部署
多數團隊在導入 ArgoCD、完成 GitOps 之後會發現,部署本身已經自動化,但「這一版到底能不能放心上線」往往仍然依賴工程師盯著監控做判斷——而這正是深夜事故與長時間停機最常見的起點。Argo Rollouts 真正補上的,是把發布風險轉化為可以量測、驗證與自動處理的工程問題。它不要求你更換部署引擎,也不需要重寫應用程式,而是在既有的 Kubernetes 與 GitOps 架構之上,加上一層由數據驅動的安全網。
從 ArgoCD 的持續部署、Kargo 的跨環境 Promotion 到 Argo Rollouts 的 Progressive Delivery,三者分別處理 GitOps 交付流程中的不同環節。如果企業只做到:Git → CI/CD → Kubernetes 代表「部署」已經自動化。但更成熟的交付流程應該進一步做到 : Git → Continuous Delivery → Promotion → Progressive Delivery → Metrics Validation → Automated Rollback 這也是從 DevOps 走向更成熟 Platform Engineering 與 Release Governance 的重要一步。對企業而言,重點不在於導入更多工具,而是建立可追溯、可驗證且能控制發布風險的軟體交付流程。
- 現況評估:盤點現行發布流程、監控體系與流量架構,界定導入範圍與優先順序
- PoC 驗證:在測試環境完成金絲雀/藍綠發布與自動分析的端到端驗證
- 正式導入:Metric Provider 整合、Analysis 策略設計,並與既有 CI/CD、ArgoCD、Kargo 串接
- 教育訓練與技術移轉:讓團隊具備自行維運與擴充的能力
如果您的團隊正面臨:
- Kubernetes 發布風險難以控制
- 新版本一次影響大量使用者
- Production 發布仍需要人工盯監控
- 回滾需要人工操作
- Canary Deployment 難以落地
- 已導入 ArgoCD,但缺少 Progressive Delivery
- 希望建立標準化 Release Governance
羽昇國際可協助您從現況評估、PoC 驗證到正式導入,建立符合企業需求的 Argo Rollouts Progressive Delivery 架構。
Argo Rollouts 常見問題 (FAQ)
Argo Rollouts 是 Kubernetes Progressive Delivery Controller,提供 Canary、Blue-Green、Traffic Management、Analysis 與自動化發布控制能力。它的核心目的是讓新版本能夠逐步接收真實流量,並根據監控指標決定是否繼續發布或回滾。
Argo Rollouts 提供 Rollout CRD 作為 Deployment 的替代資源,遷移時主要是調整 kind 與發布策略區塊,不需要改寫應用程式。Argo Rollouts 也支援直接參照既有 Deployment 的漸進式遷移方式,企業也可以採取逐服務遷移方式,不需要一次全面切換,不必一次全面切換。
不一定。在沒有流量層整合的情況下,Argo Rollouts 仍可依 Pod 副本數量做基本的金絲雀發布與自動分析。如果企業需要更精確的 Traffic Splitting、Header/Cookie Routing 等能力,則可以搭配 Istio、NGINX Ingress、AWS ALB 等流量管理元件。
兩者管理的維度不同。Argo Rollouts 負責「單一環境內」的漸進式發布——金絲雀、藍綠、流量逐步切換;Kargo 負責「跨環境」的版本推進——從 dev 到 staging 到 production 的旅程。兩者可以同時搭配使用,且 Kargo 的驗證機制直接沿用 Rollouts 的 AnalysisTemplate。
可以。Argo Rollouts 是獨立的 Kubernetes Controller,不依賴 ArgoCD。不過兩者同屬 Argo 生態系,ArgoCD 對 Rollout 資源有原生的健康狀態判讀,搭配使用時的可視性與體驗最完整。
有可能,這取決於指標與門檻的設計,因此 Metrics 與 Threshold 的設計是導入 Argo Rollouts 初期時的重要工作。實務上可以先採取:觀察 → 校準 → 自動化。先以「觀察不阻擋」的模式運行一段時間,用真實發布數據校準門檻,再逐步開啟自動回滾;對關鍵 Production 環境,也可以保留人工核准關卡,讓自動化與人工治理並存。