對于部署在K8s集群中的Spring Cloud或Dubbo微服務應用,為確保升級操作的安全性,可使用金絲雀發布(即灰度發布)進行小規模驗證,驗證通過后再全量升級。本文介紹如何使用EDAS控制臺進行金絲雀發布K8s應用。
使用限制
HSF應用:不支持金絲雀發布。
Dubbo應用:無使用限制。
Spring Cloud應用:如果應用依賴Deployment.Metadata.Name或Deployment.Metadata.Uid的功能與配置,請勿使用金絲雀發布,否則該原生功能將出現異常。
入口類型應用:如果當前應用為入口類型應用,流量從SLB直接轉發到當前應用,那么SLB流量轉發策略不會遵循此金絲雀發布策略。
說明若您想體驗金絲雀灰度發布,可以使用示例Demo:先創建一個客戶端應用,再創建多副本的服務端應用,對服務端應用進行灰度發布,并為客戶端應用綁定SLB,通過SLB訪問服務。
視頻教程
操作步驟
登錄EDAS控制臺。
在左側導航欄,單擊 ,在頂部菜單欄選擇地域,并在頁面上方選擇微服務空間。
在應用列表頁面的集群類型下拉列表,選擇K8s集群,然后單擊目標應用名稱。
在應用總覽頁面右上角,選擇 ,在選擇部署模式頁面,單擊金絲雀發布(灰度)區域右上角的開始部署。
在金絲雀發布(灰度)頁面設置新版本應用的部署參數、發布策略和灰度規則,然后單擊確定。
配置項
描述
適用場景
應用運行環境
與上一次部署保持一致。
JAR包部署:應用運行環境為標準Java應用運行環境,不可更改。
WAR包部署:應用運行環境為Apache Tomcat,類型不可更改。如果需要,可以更換版本。
適用于JAR包和WAR包部署的應用
Java環境
根據需求在下拉列表選擇對應的JDK版本。
適用于JAR包和WAR包部署的應用
文件上傳方式
與上一次的部署包類型(WAR包或JAR包)保持一致,不可更改。
上傳方式可以根據實際需求選擇上傳部署包或輸入部署包地址兩種方式。
上傳JAR包/上傳WAR包:選擇下載好的JAR包/WAR包并上傳。
JAR包地址/WAR包地址:輸入Demo包地址。
適用于JAR包和WAR包部署的應用
構建倉庫類型
說明構建倉庫類型功能僅支持容器服務K8s集群下的Java、 Tomcat、EDAS-container(HSF)三種應用類型。暫不支持ACK Serverless集群。
需要安裝鏡像免密拉取組件,具體操作,請參見使用免密組件拉取容器鏡像。
使用您自己的阿里云鏡像倉庫企業版時,需要自行配置專有網絡訪問控制。具體操作,請參見配置專有網絡的訪問控制。
應用鏡像構建過程是在您的集群內進行,并且會使用您的資源進行構建過程。單個構建任務的默認資源限制是1核1 GB。如何調整鏡像構建資源限制,具體操作,請參見如何調整鏡像構建資源限制?
使用ACR個人版或ACR企業版儲存構建后的鏡像時,構建任務會運行在集群中。構建任務擁有以下調度親和性以及調度容忍策略。
拒絕調度到有
edas.image.build=disable
標簽的節點。偏向調度到有
edas.image.build=enable
標簽的節點,但如果節點沒有edas.image.build
標簽,構建任務也可能被調度到。容忍污點:
key=edas.image.build, effect=NoSchedule
。
說明對于不想要被構建任務調度到的節點,可以添加
edas.image.build=disable
標簽。對于構建任務專用節點,可以添加
edas.image.build=enable
,以及污點key=edas.image.build, effect=NoSchedule
標簽,防止其他Pod被調度到該節點。
僅適用于鏡像部署的應用
ACR所屬地域
選擇您的容器鏡像所在的地域。該參數僅在構建倉庫類型選擇ACR企業版時需要配置。
容器鏡像服務
選擇您的容器鏡像服務。該參數僅在構建倉庫類型選擇ACR企業版時需要配置。
鏡像倉庫命名空間
在下拉列表中選擇您的鏡像倉庫所在的微服務空間,也可以單擊單側的+創建命名空間創建新的微服務空間。
版本
部署包版本,可以用時間戳作為版本號。
適用于JAR包和WAR包部署的應用
時區
根據實際需求在列表中選擇。
適用于JAR包和WAR包部署的應用
單Pod資源配額
設置單個Pod的CPU、內存和臨時存儲。如果您需要限額,請填寫具體的數字,使用默認值0代表不限額。沒有配額限制,上限取決于集群性能。
都適用
配置西
描述
首批灰度數量
首批發布的應用實例數量。右側會顯示應用當前實例數,為保證應用穩定性,灰度實例數不能超過應用實例總數的50%。
說明灰度分組發布后,必須手動開始剩余分批發布。
剩余批次
首批灰度發布后,剩余的應用實例按照該處設置的批次完成分批發布。
分批間處理方式
說明僅當剩余批次大于1時,需配置分批間處理方式。
支持以下處理方式:
自動:根據間隔自動分配分批發布。間隔為剩余批次間的發布時間間隔,單位:分鐘。
手動:手動觸發下一個批次的發布。
批次內部署間隔
每一批次內,如果應用實例數大于1,應用實例按該時間間隔部署,單位:秒。
右側發布策略配置信息區域根據配置顯示金絲雀發布流程。
EDAS支持的灰度規則包括按內容灰度和按比例灰度。
灰度規則
配置項
說明
按內容灰度
單擊添加策略,在添加內容灰度策略面板配置策略名稱及流量規則后,單擊確定。
在選擇策略下拉列表選擇創建的內容灰度策略。
說明單擊創建流量規則,可創建多個入口流量規則,多個規則可同時生效。
策略名稱
自定義內容灰度策略名稱。
協議類型
Spring Cloud
path:HTTP相對路徑。
Dubbo
選擇服務:在下拉列表選擇已創建的服務。
方法:在下拉列表選擇服務的方法。
條件模式
選擇同時滿足下列條件或滿足下列任一條件。
條件列表
Spring Cloud:根據Cookie、Header或Parameter類型設置具體的參數。
Dubbo:根據應用實際的參數、參數值獲取表達式設置。
按比例灰度
流量比例
流量按配置的比例被轉發到當前的灰度分組。
按泳道灰度
單擊添加策略,在添加泳道灰度策略面板配置策略名稱及流量規則后,單擊確定。
在選擇策略下拉列表選擇創建的泳道灰度策略。
策略名稱
自定義泳道灰度策略名稱。
泳道組
選擇已創建的泳道組。更多信息,請參見創建泳道組。
泳道
選擇已創建的泳道。更多信息,請參見創建泳道。
金絲雀發布啟動后,EDAS將先在指定的灰度分組中部署新版本應用。您可在變更記錄頁面查看部署進度和狀態。
灰度流量驗證完成后,在變更記錄頁面右側,單擊開始下一批,完成后續分批發布。
如果在驗證過程中發現新版本應用有問題,可在變更記錄頁面右上角,單擊立即回滾,在彈出的確認對話框,單擊確定。
金絲雀發布完成后,在應用總覽頁面的部署規格區域中,查看部署包是否為新部署的應用版本。