Bookinfo應用介紹
Bookinfo是一個樣例應用,用來示範多種 Istio 特性,它由四個單獨的微服務構成:
-
:productpage
微服務會調用productpage
和details
兩個微服務,用來生成頁面。reviews
-
:這個微服務包含了書籍的資訊。details
-
:這個微服務包含了書籍相關的評論。它還會調用reviews
微服務。ratings
-
ratings
微服務中包含了由書籍評價組成的評級資訊。ratings
reviews
微服務有 3 個版本:
- v1 版本不會調用
服務。ratings
- v2 版本會調用
服務,并使用 1 到 5 個黑色星形圖示來顯示評分資訊。ratings
- v3 版本會調用
服務,并使用 1 到 5 個紅色星形圖示來顯示評分資訊。ratings
下圖展示了這個應用的端到端架構

部署應用
部署istio
登入容器服務控制台,左側導航中選擇服務網格-Istio管理,選擇需要安裝Istio的叢集,使用預設配置點選部署Istio

成功部署Istio後,可以看到下方Sidecar 自動注入設定。選擇一個命名空間,開啟Sidecar自動注入

完成後可以看到istio-test命名空間下新增标簽istio-injection:enabled
部署相關服務
bookinfo使用的服務yaml檔案位址
https://raw.githubusercontent.com/istio/istio/release-1.2/samples/bookinfo/platform/kube/bookinfo.yaml這裡我們使用控制台分别部署productpage,detail,rating及reviews服務的兩個版本(v1,v2)
productpage服務
選擇叢集,命名空間

輸入鏡像名稱,版本,設定端口

服務(service)相關配置


建立完成
參考上述步驟分别建立details,ratings,reviews(v1)三個服務。
建立完成後,等待所有的service和 pod 都已經正常啟動。
建立服務網關
服務網關可以将Istio的功能(如:監控和路由規則)應用到進入叢集的流量。在服務網格目錄下選擇服務網關,點選建立。


然後,可以将虛拟服務綁定到網關,以控制進入叢集的流量。點選虛拟服務可以看到虛拟服務清單,

點選productpage的服務網關綁定,可以看到如下彈窗,選擇建立好的服務網關bookinfo-gateway,确定後完成綁定。

進入服務網關清單,點選bookinfo-gateway中istio-ingressgateway服務位址,輸入路由/productpage可以看到如下頁面

部署reviews-v2 版本
點選虛拟服務reviews,進入詳情頁,在版本管理欄點選增加灰階版本

輸入版本号進入下一步,輸入鏡像名稱,版本,設定端口。

下一步,設定灰階政策。這裡選擇基于流量比例的釋出政策,v1,v2版本流量各50%。設定完成後點選建立。

待pod啟動完成後,重新整理url,會看到v2版本的UI(由于v1、v2流量比例各50%,可能要多重新整理幾次)

最後,我們可以使用壓測工具(如siege)模拟多次通路,再通過kiali觀察流量拓撲。我們在安裝istio的時候已經預設安裝了kiali,隻需要在路由中建立一個ingress就可以友善的進行通路。
左側導航中選擇路由與負載均衡->路由,選擇安裝好istio的叢集,命名空間選擇istio-system,點選建立并按如下填寫相關内容
建立完成後會在Ingress清單看到kiali的通路位址

進入kiali界面(使用者名密碼預設為admin),可以看到流量拓撲如圖。

小結
本文介紹了使用阿裡雲容器服務部署運作bookinfo示例的過程。接下來我們還可以用它來體驗Istio相關特性,包括智能路由,錯誤注入,流量控制等。