系列目錄
雲原生架構(四)原始碼詳解
雲原生架構(五)總結提高
前兩節,我們學習了雲原生架構Istio的原理概覽、環境搭建。要快速熟悉一個技術架構,最快的方式是先跑起來。這一節我們以Istio服務網格的能力,驗證微服務間的流量管理、可觀測性。
注:本節參照Istio官網--任務相關章節實現,飛機票。
我們以Istio官方自帶的bookinfo(第二節Istio自帶的samples)作為樣例工程,來做流量管理和觀測性的測試。樣例工程Bookinfo 應用分為四個單獨的微服務:
productpage
. 這個微服務會呼叫 details
和 reviews
兩個微服務,用來生成主頁面。details
. 這個微服務中包含了書籍的詳情資訊。reviews
. 這個微服務中包含了書籍相關的評論。分3個版本,V1啥都不呼叫;V2 呼叫ratings
,返回黑色星星;V3呼叫ratings
,返回紅色星星;ratings
. 這個微服務中包含了由書籍評價組成的評級資訊。應用架構如下:
前面一節,我們命令列開啟kiali服務監控:
istioctl dashboard kiali
存取幾次「書主頁」:http://127.0.0.1/productpage,再重新整理kiali監控。
執行以下命令以應用 Virtual Service:
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
我們想要把bookinfo的服務流量都路由到V1版本,來看下yaml設定內容:
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: productpage spec: hosts: - productpage http: - route: - destination: host: productpage subset: v1 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v1 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - route: - destination: host: ratings subset: v1 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService//虛擬服務 metadata: name: details//屬性-名稱:details spec: hosts: - details http: - route: - destination://路由到 details域名的v1子集 host: details subset: v1 ---
VirtualService用以指定一組流量路由規則。例如從:A(hosts)->B(host+subset)。開啟http://127.0.0.1/productpage存取:
如上圖,Reviews裡面沒有星星,按照專案介紹,應該是存取V1版本的服務。多重新整理幾次,一直都是這個,不會切換成星星(V2、V3)了。
開啟kiali監控->Graph->namespace選擇default,看到服務流量全部存取的是V1版本的。如下圖:
ok,到這裡,《強制流量路由》驗證成功!
上面我們嘗試把流量強制轉移到V1版本,這一次,我們嘗試把reviews服務,50%流量匯入v1,50%匯入v3,命令如下:
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
內容如下:
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route:// v1 50% v3 50% - destination: host: reviews subset: v1 weight: 50 - destination: host: reviews subset: v3 weight: 50
多存取幾次bookinfo頁面:http://127.0.0.1/productpage,發現reviews評價內容,在紅色星星(V3)和無星星(V1)之間跳轉。檢視kiali監控,如下圖:
如上圖,reviews服務,v1和v3,基本就在50%左右跳轉。驗證通過!
如果你覺得本文對你有點幫助的話,記得在右下角點個「推薦」哦,博主在此感謝!