在 上一篇 介紹了 Kiali 能夠可視化架構及顯示 Monitor 相關資訊,除了這些功能之外, Kiali 還能幫助我們建立 Istio 相關規則,至於要怎麼做,本篇就來帶大家了解。
在 Day12 - 使用 Istio 實現 Canary 中,透過 Istio 的 Routing 功能,將舊版本的流量逐步轉移到新版本,藉此達成 Canary Deployment,其中實現的做法是建立 Virtual Service
及 Destination Rule
的 Yaml 檔案,並使用 kubectl apply
指令將元件部署到 Kubernetes 中。現在有了 Kiali 工具,除了自己撰寫 Yaml 檔案之外,也能在 GUI 設定以完成相同的任務,接著就讓我們實際試試看吧!
本篇延續 Day19 的實作,請先在 Istio 環境下先安裝好 Kiali。
kubectl port-forward
將流量轉到 Bookinfo Application 及 Kiali GUI# 開一個 Terminal
kubectl port-forward svc/productpage 8080:9080
# 開另一個 Terminal
kubectl port-forward -n istio-system svc/kiali 8082:20001
接著將流量打入到 Bookinfo Application。
while true; do curl -s 127.0.0.1:8080/productpage | grep reviews-v ; sleep 2; done
目前流量會平均分配到三個版本
Graph
http://127.0.0.1:8082
在 Kiali 可以看到 Bookinfo Application 的架構圖
接著需要控制 Reviews Service 不同版本的流量,需要在此設定 Istio 規則。
Reviews Service
-> 點選 Details
在 Actions 選項有很多 Istio 功能可以選擇,這裡選擇 Request Routing 服務。
Action
-> Request Routing
在 Request Routing 就能設置不同版本的流量,這裡先把大部分流量轉入 v1,小部分流量則轉到 v2。
Route To
,將 v1 與 v2 版本流量設定為 90:10 -> 點擊 Add Route Rule
-> Preview
在 Previews 介面中,會看到實現這個功能所需下達的 Virtual Service
及 Destination Rule
,如同在 Day12 中設置的 Yaml 檔案,但有了 Kiali 只需在 GUI 點擊即可實現功能。
Create
後點擊確認Destination Rule 將不同版本分成三個群組
用 Virtual Service 實現 Weight Routing
創建完成後,Kiali 就會將 Virtual Service
及 Destination Rule
部署到 Kubernetes 中,即時的改變流量,而流量的轉變可以在 GUI 上觀察到。
Display
並勾選 Traffic Distribution -> 點選右上角刷新刷新幾次後,在 GUI 上即可看到 v1 與 v2 流量比例接近 90:10。
在 Terminal 的 Logs 也能得知流量轉移的結果。
除了在 Kiali 建置 Istio 規則之外,我們也能夠查看 Istio Configuration 並進行修改。
點擊 Istio Config
-> 點選 reviews VS
修改 Yaml 中 v1 與 v2 的流量各為 50 -> 點選 Save
本篇介紹的 Kiali 功能只是冰山一角,可以自己嘗試不同的 Istio 功能,查看在 Kiali 會建置的元件,就可以學習到如何撰寫 Istio Yaml 檔案,而藉由可視化的架構以及數據的呈現,相信你也能很直觀的了解到 Istio 帶來的方便性。