版本流量路由是指將流量按照比例路由到服務的不同版本,適用於灰階發布和A/B測試等情境。本文介紹如何使用Istio資源實現版本流量路由。
前提條件
步驟一:建立網關規則
網關規則(Gateway)定義了在網格出入口操作的負載平衡器,用於接收傳入或傳出的HTTP/TCP串連。下文介紹如何建立網關規則,並將其綁定到入口網關。
步驟二:建立虛擬服務
虛擬服務(VirtualService)定義流量路由規則和請求轉寄策略。建立虛擬服務後,您可以通過/productpage、/static、/login、/logout、/api/v1/products路徑訪問Bookinfo應用。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊建立。
在建立頁面,進行以下配置,然後單擊建立。
關於配置項的詳情,請參見Virtual Service。
配置項
說明
基本資料
命名空間
本樣本選擇default。
名稱
自訂虛擬服務的名稱。
作用範圍
開啟作用於指定網關規則開關,單擊請選擇網關規則。
在請選擇網關規則對話方塊,選中bookinfo-gateway,單擊表徵圖,然後單擊確定。
關閉作用於所有Sidecar開關。
所屬服務
單擊選擇所屬網關服務網域名稱,在選擇所屬網關服務網域名稱對話方塊,選中*,單擊表徵圖,然後單擊確定。
HTTP路由
路由名稱
單擊HTTP路由,單擊添加路由,自訂路由名稱。
請求匹配規則
重複單擊添加請求匹配規則,配置如下五條規則:
開啟匹配請求的URI開關,配置匹配方式為精確,匹配內容為/productpage。
開啟匹配請求的URI開關,配置匹配方式為首碼,匹配內容為/static。
開啟匹配請求的URI開關,配置匹配方式為精確,匹配內容為/login。
開啟匹配請求的URI開關,配置匹配方式為精確,匹配內容為/logout。
開啟匹配請求的URI開關,配置匹配方式為首碼,匹配內容為/api/v1/products。
路由目的地
單擊添加路由目的地,配置服務名稱為productpage,連接埠為9080。
以上配置對應的虛擬服務YAML如下。
步驟三:訪問Bookinfo應用
擷取入口網關地址。
方式一:通過ASM控制台
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,擷取服務地址。
方式二:通過Container Service管理主控台
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在服務頁面頂部,選擇命名空間為istio-system,在External IP列,查看istio-ingressgateway對應的80連接埠的IP地址。
在瀏覽器地址欄,輸入http://{入口網關服務的IP地址}/productpage,持續重新整理頁面10次,訪問Bookinfo應用。
每次重新整理都會訪問reviews服務的v1、v2和v3版本。您可以看到reviews服務三個版本出現的比例接近1:1:1。
步驟四:建立版本路由規則
建立目標規則,按版本給reviews服務進行分組,分為v1、v2、v3子集。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊建立。
在建立頁面,進行以下配置,然後單擊建立。
關於配置項的詳情,請參見Destination Rule。
配置項
說明
基本資料
配置命名空間為default,自訂目標規則的名稱,配置服務名稱為reviews。
服務版本(子集)
單擊服務版本(子集),重複單擊添加服務版本(子集),配置如下三個版本。
版本1:配置版本名稱為v1,單擊添加標籤,配置標籤名為version,標籤值為v1。
版本2:配置版本名稱為v2,單擊添加標籤,配置標籤名為version,標籤值為v2。
版本3:配置版本名稱為v3,單擊添加標籤,配置標籤名為version,標籤值為v3。
以上配置對應的目標規則YAML如下。
建立虛擬服務,將10%流量路由到reviews服務的v1版本,40%流量路由到reviews服務的v2版本,50%流量路由到reviews服務的v3版本。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊建立。
在建立頁面,進行以下配置,然後單擊建立。
配置項
說明
基本資料
命名空間
本樣本選擇default。
名稱
自訂虛擬服務的名稱。
作用範圍
開啟作用於所有Sidecar開關。
所屬服務
單擊添加所屬服務,在添加所屬服務對話方塊,配置命名空間為default,在添加所屬服務地區,選中reviews服務,單擊表徵圖,然後單擊確定。
HTTP路由
路由名稱
單擊HTTP路由,單擊添加路由,自訂路由名稱。
路由目的地
重複單擊添加路由目的地,配置如下三個路由目的地。
配置服務名稱為reviews,版本為v1,權重為10。
配置服務名稱為reviews,版本為v2,權重為40。
配置服務名稱為reviews,版本為v3,權重為50。
以上配置對應的虛擬服務YAML如下。
步驟五:驗證版本流量路由是否成功
在瀏覽器地址欄,輸入http://{入口網關服務的IP地址}/productpage,持續重新整理頁面10次。
若reviews服務的v1、v2、v3三個版本出現的比例接近1:4:5,表明版本流量路由成功。