藍綠發布是迭代產品在生產環境安全上線的一種重要手段,提供零宕機部署方式。本文介紹如何通過創建藍綠發布單發布應用服務。
藍綠發布單在應用服務維度互斥,即不能通過兩個發布單同時發布一個應用服務,且與普通發布單互斥。
前提條件
已創建應用服務,且配置應用服務的 部署和調度策略 時,將部署分組策略設為 共分一組 或 快速分組。
關于分組策略限制說明可參考下表。
部署分組策略 | 藍綠發布是否支持 | 說明 |
每個 Pod 一組 | × | 由于藍綠發布的灰度驗證是通過 spanner 來控制,而不是通過應用服務內百分比升級的 Pod 來控制的。 |
按部署單元分組 | × | 假設流量配比為 100 : 0,對于流量為 0 的區域,若按部署單元分組,流量無法調配至該區域。 |
共分一組 | √ | / |
快速分組 | √ | / |
共分一組(Beta 單元模式) | × | / |
按部署單元百分比并發模式 | × | / |
創建藍綠發布單
登錄 LHC 控制臺。
在左側導航欄單擊 發布運維 > 發布單。
在發布部署大盤,單擊 創建發布單。
配置基本信息。
標題:發布標題。
類型:支持 藍綠發布(入口應用) 和 藍綠發布(部署單元維度)兩種類型 。
說明藍綠發布(入口應用):適用于配置了統一接入的入口應用,發布過程中新版本先發布一倍數量的新 Pod,驗證沒問題后再將老版本的 Pod 回收,整個發布過程需要消耗兩倍的應用服務資源。
藍綠發布(部署單元維度):適用于非單元化的應用服務,發布過程中先切斷一個部署單元的入口流量,再全量發布整個部署單元,發布后支持灰度引流驗證,驗證沒問題后再發布下一個部署單元。
命名空間:選擇待發布的應用服務所屬的命名空間。
應用服務發布列表:您可以在 待選應用服務列表 中單擊選擇需要的應用服務,單擊 添加 將應用服務添加到 已選應用服務列表 中。
說明若應用服務存在多個提交版本,需要選擇要發布的版本。默認選擇最新的版本。
藍綠發布單選擇的應用服務上一次部署狀態必須是成功的,保證有一個完整的藍版本在線。
藍綠發布單選擇的版本與當前運行的版本對比,不能有統一接入的配置變更。
藍綠發布單選擇的兩個版本不能有拓撲變更,比如從 Cell A 變為 Cell B。對于副本數變更,不屬于拓撲變更。
引流應用服務:僅當發布類型為 藍綠發布(部署單元維度)時可見,選擇需要引流的應用服務。
說明引流應用服務上一版本必須發布成功。
引流應用服務版本不能刪除/添加統一接入,也不能刪除/添加部署單元。
引流應用服務必須帶有非單元化的路由(Ingress)。
引流應用服務必須與上文在 應用服務發布列表 中選擇的應用服務部署單元相同。
部署單元發布順序:僅當發布類型為 藍綠發布(部署單元維度)時可見,手動更改部署單元的發布順序。
單擊 下一步,進行高級配置。
設置應用服務依賴關系:當選擇了 2 個及以上應用服務時,可能需要填寫應用服務之間的依賴關系。如果應用服務之間不存在依賴關系,則直接跳過。
在 依賴于 列中輸入某個應用服務所依賴的服務名稱(可以同時選擇多個)。您可通過逐條添加的方式添加依賴關系。
例如,如果 appservice1 依賴 appservice2,則在 appservice1 對應的 依賴于 列中輸入 appservice2 即可,依賴于多個應用服務時同理。
重要應用服務之間不可循環依賴,即不可出現應用服務 A 依賴于應用服務 B,同時應用服務 B 又依賴于應用服務 A 這種情況。
單擊 下一步,預覽已經配置好的發布單信息。
在 預覽 頁面確認信息無誤后,單擊 創建。系統會自動跳轉到 發布單詳情 頁面,單擊 整體發布 即可開始發布。
查看藍綠發布單詳情
發布單創建完成后,系統會自動跳轉到 發布單詳情 頁面,您可以查看發布單的執行詳情。下文將根據藍綠發布類型的不同分別介紹 藍綠發布(入口應用) 和 藍綠發布(部署單元維度)兩種發布單詳情。
若發布單初始化失敗,則無法進行發布,可以將鼠標懸停到 失敗原因 上,查看具體原因,或單擊 重新初始化。
藍綠發布單的藍版本為當前在線版本。
藍綠發布(入口應用)
前置任務
執行服務配置變更:若容器服務存在添加或修改 Service 服務配置,執行 Service 服務配置任務,若無則直接跳過。
發布日志配置:若容器服務首次配置日志配置,則執行日志配置前置任務:創建或更新,若無則直接跳過。
應用服務
若應用服務帶有統一接入,可配置藍綠區流量配比。
說明僅應用服務配置了統一接入,才可以為藍綠區設置流量配比,即在綠版本發布的過程中進行流量調撥。關于如何為應用服務配置統一接入的信息,請參見 配置統一接入。
如果需要自定義藍綠區流量配比,在應用服務區域單擊 配置,在彈框中輸入藍區、綠區流量配比即可。
如果未自定義藍綠區流量配比,流量配比將按
藍區:綠區 = 100:0(%)
來確定流量分發的比重。隨后,將在執行后置任務時,全部流量將流向綠區。
后置任務
流量切換到綠區:若藍綠發布應用服務,執行流量切換到綠區后置任務。
清理無效服務配置:若容器服務存在刪除 Service 服務配置,執行 Service 清理任務,若無則直接跳過。
發布日志配置:若容器服務未配置日志配置或取消日志配置,則執行日志配置后置任務—刪除,若無則直接跳過。
后置任務(回滾)
回退日志配置:若應用服務需回退至無資源狀態,且應用服務的日志配置已生效,則執行日志配置的回退任務,若無則直接跳過。
藍綠發布(部署單元維度)
發布順序
該類型在發布時會先切斷一個部署單元的入口流量,再全量發布整個部署單元,所以整個發布的順序如下:
切除流量 >> 部署單元發布 >> 切換流量 >> 恢復流量
說明部署單元發布 和 切換流量 的次數由實際的部署單元數量決定。
完成一個部署單元的部署后,必須進行灰度引流操作,然后單擊 確定,切換流量后繼續下一個部署單元的部署操作。
整個發布單按照共分一組的方式,根據部署單元來決定應用的切流發布的順序。如上圖所示,按照 gz00a > rz00a > gz00c 的順序先后對應用進行切流、發布操作。
灰度引流
在發布過程中,單擊 灰度引流,可調配具體的部署單元流量權重。
說明如果部署單元流量權重為 0,切換流量后可能出現流量損失的情況。
其他操作
藍綠發布單創建完成后,如需終止藍綠發布,可單擊 取消。具體操作步驟與普通發布的相同,請參見 取消發布。
說明藍綠發布單取消之后,可能會同時出現多個運行版本,需等到下一次用戶主動發布才會自動清除多余版本。
配置應用服務的部署和調度策略時,若開通了 Beta 確認功能,在應用服務發布時,單擊 Beta 確認,使應用繼續分組發布。具體操作步驟與普通發布的相同,請參見 Beta 確認。
若藍綠發布執行失敗,可單擊 重試 或 回滾 繼續進行操作。具體操作步驟與普通發布的相同,請參見 重試回滾。
發布過程中或完成后,您可以查看 Pod 事件,了解 Pod 的調度與運行狀態。具體操作步驟與普通發布的相同,請參見 查看 Pod 事件。