在雲原生網關中,服務版本主要應用在路由配置中的標籤路由功能。通過對路由設定合適的標籤路由策略,滿足您在金絲雀發布、標籤路由和高可用部署等情境下的需求。
固定地址和DNS網域名稱類型的服務不支援服務版本管理。
背景資訊
在微服務領域,服務泛指應用程式的功能單元,通常具備獨立的業務域,例如訂單服務、使用者服務等。從物理上看,服務部署運行在具有網路地址的容器、虛擬機器和物理機上;從邏輯上看,服務由一組提供相同功能的網路節點群組成。
服務版本,可以理解為服務所有節點的子集,是根據節點的中繼資料資訊分組後的執行個體集。服務版本通常應用在金絲雀發布、標籤路由和高可用部署情境中。
金絲雀發布:在服務持續迭代發展過程中,頻繁存在服務新版本發布上線的需求,為了確保流量在服務升級過程中平穩無損,開發人員經常會使用金絲雀發布手段來將小部分流量分發到新版本進行驗證,驗證符合預期後,逐步將流量從老版本完全遷移至新版本。
標籤路由:在實際業務中,有的服務本身存在多個版本,各個版本之間功能也有差異,分別應用於有特定資訊的請求。例如對於同一個API,帶有某個Header值的請求必須訪問服務的某個版本。另一個情境是多套開發環境(測試、預發和生產),利用服務版本可以根據請求的資訊來決定分發到哪個開發環境。
高可用部署:為了保證服務的可用性,服務可以部署在不同的K8s叢集中,我們可以根據節點上與叢集相關的中繼資料資訊對服務所有執行個體按叢集維度進行版本管理,並且可以調整流量到各個叢集(各個服務版本)的權重。當某個叢集出現故障時,設定流量到該叢集的權重為0,即可達到流量切換目的。
服務版本管理依賴服務節點上關聯的中繼資料資訊。
對於Container ServiceK8s,服務節點上的中繼資料資訊來源於Pod的Labels屬性。例如,如果使用的是SpringCloud應用並關聯了K8sService,那麼可以在K8sDeployment YAML的
spec.template.metadata.labels下增加標籤名及標籤值。對於Nacos註冊中心,服務節點上的中繼資料資訊取決於業務應用註冊節點時攜帶的中繼資料資訊。例如,如果使用的是SpringCloud應用和Nacos註冊中心,那麼可以通過
spring.cloud.nacos.discovery.metadata欄位來設定節點的中繼資料資訊。
添加服務版本
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。
在左側導覽列,選擇路由管理,然後選擇服務頁簽。
單擊需要變更的服務名稱,然後在服务版本地區,單擊添加新版本。
在服務版本列表配置相關參數,然後單擊操作列下方的
表徵圖。
配置項
說明
版本名称
輸入服務版本名稱,建議使用可讀性強、語義明確的版本名稱。
标签名
顯示該服務下所有執行個體關聯的節點中繼資料資訊的Key(鍵)集合,您需選擇其中一個Key作為劃分新版本執行個體集的依據。
标签值
顯示在所選標籤名下所有執行個體的Value集合,您需選擇其中一個Value作為劃分新版本執行個體集的依據。
实例数/比例
執行個體數:根據所設定的標籤名和標籤值從所有執行個體中篩選出的執行個體數,即屬於目前的版本的執行個體集。
比例:篩選出屬於目前的版本的執行個體占所有執行個體的比重。
說明标签名和标签值共同作為劃分目前的版本執行個體集的依據。
在確定儲存對話方塊,單擊确定。
服務版本添加成功後,即顯示在服务版本中。
編輯服務版本
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。
在左側導覽列,選擇路由管理,然後選擇服務頁簽。
單擊需要變更的服務名稱,然後在服务版本地區,單擊操作列下的
表徵圖。選擇新的标签名和标签值,然後單擊操作列下的
表徵圖。在確定儲存對話方塊,單擊确定。
刪除服務版本
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。
在左側導覽列,選擇路由管理,然後選擇服務頁簽。
單擊需要變更的服務名稱,然後在服务版本列表中單擊操作列下的
表徵圖。在確定刪除對話方塊,單擊确定。