第三章 九析帶你輕鬆完爆服務網格 - istio Bookinfo 應用

系列文章:


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程

目錄

1 前言

2 bookinfo 架構介紹

3 bookinfo 配置與部署

    3.1 配置 istio 自動注入

    3.2 部署 bookinfo 應用

    3.3 驗證 bookinfo 部署情況

4 設置 bookinfo 網關

    4.1 定義 bookinfo 入口網關

    4.2 確認網關已創建

5 訪問 bookinfo 應用

    5.1 獲取 INGRESS_HOST

    5.2 獲取 INGRESS_PORT

    5.3 通過瀏覽器訪問 bookinfo 應用

6 卸載 bookinfo 應用

    6.1 驗證卸載

7 總結


1 前言

        如果你對博客有任何疑問或者想更深入學習 istio,請加微信羣,我們一起進步:

1.jpg


2 bookinfo 架構介紹

        bookinfo 是 istio 的學習樣例,通過 bookinfo 你可以對 istio 提供的路由、遙測等功能有更加深入的理解。

        下圖是 bookinfo 在沒有嵌入 istio 前的物理架構圖:clipboard2.png

        bookinfo 是一個在線書店應用,該應用由 4 個微服務組成,分別爲 Product page、Reviews、Details 和 Ratings。爲了表現 istio 的無侵入性,這 4 個微服務分別由 python、java、ruby 和 node 開發。下面分別說明如下:

Product page:聚合服務,內容由 Reviews 和 Details 內容聚合而成

Details:圖書詳情服務

Reviews:圖書評價服務(多版本)。它也是一個聚合服務,聚合了 Ratings

Ratings:圖書預訂排名服務

        下圖是 bookinfo 嵌入 istio 後的物理架構圖:clipboard3.png

        該架構圖演示了嵌入 istio 後 bookinfo 的每個微服務都會新增一個 Envoy,這個 Envoy 就是所謂的 sidecar,它會接管跟它配對的微服務的所有網絡進、出口流量。其實 Envoy(sidecar)的作用就像你的手機,它正在逐漸把你變成啞巴、聾子和植物人,它承接了你所有的信息入口和出口,某些別有用心的人和組織通過對手機進行監控、遙測、路由等控制,起到控制你的思維、輿論導向、審美愛好等目的。


3 bookinfo 配置與部署

3.1 配置 istio 自動注入

        因爲 bookinfo 會啓動多個 pod,每次手動注入 sidecar 會特別繁瑣,因此我們使用批註入的方式。如果你對 sidecar 注入不瞭解,請參考本人的上篇博客。

kubectl create ns jiuxi # 創建 jiuxi 命名空間

kubectl label ns jiuxi istio-injection=enabled

kubectl get ns jiuxi --show-labels

        命令操作成功後截圖如下:

clipboard4.png

3.2 部署 bookinfo 應用

        在命名空間 jiuxi 中部署了 bookinfo 應用:

kubectl apply -f bookinfo/platform/kube/bookinfo.yaml -n jiuxi

        部署過程截圖如下:

clipboard5.pngspacer.gif

        執行如下命令查看 bookinfo 的 service 列表:

kubectl get svc -n jiuxi

        服務列表截圖如下:

spacer.gifclipboard6.png

        執行如下命令查看 bookinfo 的 pod 列表:

kubectl get pod -n jiuxi

spacer.gifclipboard7.png

3.3 驗證 bookinfo 部署情況

        在服務列表中尋找 productpage 服務,然後使用 curl 命令驗證服務是否發佈成功。

kubectl get svc -n jiuxi

curl http://SVC_CLUSTER_IP:9080 | grep -o "<title>.*</title>"

        執行成功的結果如下截圖所示:

spacer.gifclipboard8.png

        自此,整個 bookinfo 應用就已經成功部署了。


4 設置 bookinfo 網關

        上面的步驟已經可以讓你訪問到 bookinfo 應用了。但是我知道有些同學依舊覺得寒磣,因爲很多人還是通過瀏覽器來看世界的。

        網關就相當於你房子的大門,每當你飢腸轆轆回到家,你可以通過全開、半開、開一條縫等動作控制隔壁大媽家飯菜的飯菜香味。後續課程會專門介紹網關更深層次的原理和運用。這裏你先有個粗淺的理解就可以了。

4.1 定義 bookinfo 入口網關

kubectl apply -f istio-1.4.5/samples/bookinfo/networking/bookinfo-gateway.yaml -n jiuxi

4.2 確認網關已創建

kubectl get gateways.networking.istio.io -n jiuxi

spacer.gifclipboard9.png


5 訪問 bookinfo 應用

5.1 獲取 INGRESS_HOST

kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'

5.2 獲取 INGRESS_PORT

kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'

5.3 通過瀏覽器訪問 bookinfo 應用

        根據 5.1 和 5.2 獲取到 host 和 port 信息,如下截圖所示:

spacer.gifclipboard10.png

        根據此 host 和 port,打開瀏覽器進行訪問:

        多刷新幾次頁面,你會發現 bookinfo 應用使用到的多個 reviews 版本,如下所示:

spacer.gifclipboard11.png

spacer.gifclipboard12.png

        正好可以對應到 pod 信息:

spacer.gifclipboard13.png


6 卸載 bookinfo 應用

        你已經創建了 bookinfo,有了創建的快感。也許你有點悵然若失,因爲你覺得你的技術人生不夠圓滿,你想親身完爆你創建的一切,那麼還等什麼,執行下面的語句吧:

./istio-1.4.5/samples/bookinfo/platform/kube/cleanup.sh

        命令執行成功後,會顯示如下截圖:

spacer.gifclipboard14.png

6.1 驗證卸載

        執行如下命令驗證你是否成功卸載:

kubectl get virtualservices.networking.istio.io -n jiuxi

kubectl get destinationrules.networking.istio.io -n jiuxi

kubectl get gateways.networking.istio.io -n jiuxi

kubectl get pod -n jiuxi

        但是假如你覺得破壞的感覺很爽,就像嚼了炫邁一下停不下來,你可以執行如下作死命令:

rm -rf /     # 你要是真敢這麼做,我就崇拜你


7 總結

        自此,九析已經帶你輕鬆完爆了 Bookinfo 應用。相信在操作的過程中,你還有很多不理解的地方,但是沒關係,後續九析會爲你庖丁解牛的。你需要做的,就是跟着九析操作一遍,熟悉一下整個流程,後續某天你一定會在某個瞬間大聲尖叫:“我得到了”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章