iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

前言

上一篇 介紹了 Kiali 能夠可視化架構及顯示 Monitor 相關資訊,除了這些功能之外, Kiali 還能幫助我們建立 Istio 相關規則,至於要怎麼做,本篇就來帶大家了解。

使用 Kiali 建立 Request Routing

Day12 - 使用 Istio 實現 Canary 中,透過 Istio 的 Routing 功能,將舊版本的流量逐步轉移到新版本,藉此達成 Canary Deployment,其中實現的做法是建立 Virtual ServiceDestination Rule 的 Yaml 檔案,並使用 kubectl apply 指令將元件部署到 Kubernetes 中。現在有了 Kiali 工具,除了自己撰寫 Yaml 檔案之外,也能在 GUI 設定以完成相同的任務,接著就讓我們實際試試看吧!

本篇延續 Day19 的實作,請先在 Istio 環境下先安裝好 Kiali。

  1. 使用 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。

  1. 執行腳本,每兩秒打入一次流量,並顯示 Reviews 的版本
while true; do curl -s 127.0.0.1:8080/productpage | grep reviews-v ; sleep 2; done

https://ithelp.ithome.com.tw/upload/images/20220929/20139235tJa9W1XNgU.png

目前流量會平均分配到三個版本

  1. 在瀏覽器輸入網址進入 Kiali 網站 -> 點擊 Graph
http://127.0.0.1:8082

https://ithelp.ithome.com.tw/upload/images/20220929/20139235sITYRPkG2s.png

在 Kiali 可以看到 Bookinfo Application 的架構圖

接著需要控制 Reviews Service 不同版本的流量,需要在此設定 Istio 規則。

  1. 右鍵點擊 Reviews Service -> 點選 Details

https://ithelp.ithome.com.tw/upload/images/20220929/20139235fz9GubU3IT.png

在 Actions 選項有很多 Istio 功能可以選擇,這裡選擇 Request Routing 服務。

  1. 點擊 Action -> Request Routing

https://ithelp.ithome.com.tw/upload/images/20220929/20139235zXR0ERzLbu.png

在 Request Routing 就能設置不同版本的流量,這裡先把大部分流量轉入 v1,小部分流量則轉到 v2。

  1. 點擊 Route To,將 v1 與 v2 版本流量設定為 90:10 -> 點擊 Add Route Rule -> Preview

https://ithelp.ithome.com.tw/upload/images/20220929/20139235yveGu7ffxG.png

在 Previews 介面中,會看到實現這個功能所需下達的 Virtual ServiceDestination Rule,如同在 Day12 中設置的 Yaml 檔案,但有了 Kiali 只需在 GUI 點擊即可實現功能。

  1. 查看將建立的 Yaml 元件 -> 點選 Create 後點擊確認

https://ithelp.ithome.com.tw/upload/images/20220929/20139235vuF2ywgW2J.png

Destination Rule 將不同版本分成三個群組

https://ithelp.ithome.com.tw/upload/images/20220929/20139235GNJ7nSO0M6.png

用 Virtual Service 實現 Weight Routing

創建完成後,Kiali 就會將 Virtual ServiceDestination Rule 部署到 Kubernetes 中,即時的改變流量,而流量的轉變可以在 GUI 上觀察到。

  1. 回到 Graph,點擊 Display 並勾選 Traffic Distribution -> 點選右上角刷新

https://ithelp.ithome.com.tw/upload/images/20220929/20139235TOR0ddXu2u.png

刷新幾次後,在 GUI 上即可看到 v1 與 v2 流量比例接近 90:10。

https://ithelp.ithome.com.tw/upload/images/20220929/201392354MDm1O4Nrb.png

在 Terminal 的 Logs 也能得知流量轉移的結果。

https://ithelp.ithome.com.tw/upload/images/20220929/2013923541pbXtvjDk.png

在 Kiali 修改 Istio Configuration

除了在 Kiali 建置 Istio 規則之外,我們也能夠查看 Istio Configuration 並進行修改。

  1. 點擊 Istio Config -> 點選 reviews VS
    https://ithelp.ithome.com.tw/upload/images/20220929/20139235RVDQIbT5OH.png

  2. 修改 Yaml 中 v1 與 v2 的流量各為 50 -> 點選 Save

https://ithelp.ithome.com.tw/upload/images/20220929/20139235EzyyiI0plR.png

  1. 回到 Graph ,刷新幾次過後,即可看到流量從原本的 90:10 轉為 50:50

https://ithelp.ithome.com.tw/upload/images/20220929/20139235Di7AFoVEKO.png

總結

本篇介紹的 Kiali 功能只是冰山一角,可以自己嘗試不同的 Istio 功能,查看在 Kiali 會建置的元件,就可以學習到如何撰寫 Istio Yaml 檔案,而藉由可視化的架構以及數據的呈現,相信你也能很直觀的了解到 Istio 帶來的方便性。


上一篇
Day19 - 在 Istio 使用 Kiali 提升 Observability
下一篇
Day21 - 將數據可視化的工具,Grafana 介紹
系列文
學會 Kubernetes 然後呢?由 Istio 進入 DevOps 偉大航路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言