前言html
在公有云方面,華爲雲已經率先將 Istio 做爲產品投入到公有云中進行商業應用中,保持和開源istio高度兼容,作了商業化的運維管理界面,同時進行了性能優化。這裏咱們作一次驗證測試。性能優化
Bookinfo 應用架構
這裏咱們部署一個demo,由四個單獨的微服務構成**(注意這裏的四個微服務是由不一樣的語言編寫的)**,用來演示多種 Istio 特性。這個應用模仿在線書店的一個分類,顯示一本書的信息。頁面上會顯示一本書的描述,書籍的細節(ISBN、頁數等),以及關於這本書的一些評論。負載均衡
Bookinfo 應用分爲四個單獨的微服務:運維
productpage:productpage微服務會調用details和reviews兩個微服務,用來生成頁面。ide
details:這個微服務包含了書籍的信息。微服務
reviews:這個微服務包含了書籍相關的評論。它還會調用 ratings 微服務。性能
ratings:ratings 微服務中包含了由書籍評價組成的評級信息。測試
這裏主要使用reviews來演示 Istio 特性,reviews微服務有 3 個版本:優化
v1 版本不會調用ratings服務。
v2 版本會調用ratings服務,並使用 1 到 5 個黑色星形圖標來顯示評分信息。
v3 版本會調用ratings服務,並使用 1 到 5 個紅色星形圖標來顯示評分信息。
下圖展現了這個應用的端到端架構。
Istio 注入以前的 Bookinfo 應用
Bookinfo 是一個異構應用,幾個微服務是由不一樣的語言編寫的。這些服務對 Istio 並沒有依賴,可是構成了一個有表明性的服務網格的例子:它由多個服務、多個語言構成,而且 reviews 服務具備多個版本。
部署應用
這裏 Istio 的安裝部署就不在贅述了。
值得注意的是:若是使用的是開源K8s服務安裝的 Istio ,要配置負載均衡。
在 Istio 中運行這一應用,無需對應用自身作出任何改變。咱們只要簡單的在 Istio 環境中對服務進行配置和運行,具體一點說就是把 Envoy sidecar 注入到每一個服務之中。這個過程所需的具體命令和配置方法由運行時環境決定,而部署結果較爲一致,以下圖所示:
Bookinfo 應用
全部的微服務都和 Envoysidecar 集成在一塊兒,被集成服務全部的出入流量都被 sidecar 所劫持,這樣就爲外部控制準備了所需的 Hook,而後就能夠利用 Istio 控制平面爲應用提供服務路由、遙測數據收集以及策略實施等功能。
下載安裝
到 GitHub 中 istio 的 release 中下載相應版本的 istio包,下載後將 bin目錄配置到環境變量 PATH中 export PATH="/istio/bin:$PATH",這裏咱們使用的是 istio 1.0.5版本
Bookinfo 這個應用就在samples/目錄下
在華爲雲(CCE)上運行
華爲雲率先將 Istio 做爲產品投入到公有云中進行商業應用,開通方式十分簡單,只要在華爲雲CCE上建立集羣,而後申請 Istio 公測便可。
爲了方便測試Bookinfo 應用在華爲雲上提供了一鍵體驗應用,點擊便可省去剛剛那一系列的kubectl操做
一鍵建立體驗應用
點擊灰度發佈便可
建立金絲雀發佈
選擇灰度發佈的組件
填寫版本號
選擇鏡像版本
版本建立完成後配置灰度策略
選擇相應策略,策略下發便可
總的來講,華爲雲的Istio 確實已是商業化應用,這裏只是展現了部分灰度發佈的功能。其餘好比流量治理,流量監控等功能還沒展現,這些功能作的十分細緻,值得嘗試。
參考
基於ISTIO服務網格的灰度發佈
https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0012.html