系列文章:java
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程node
目錄python
1 前言json
2 bookinfo 架構介紹瀏覽器
3 bookinfo 配置與部署ruby
3.1 配置 istio 自動注入微信
3.2 部署 bookinfo 應用網絡
3.3 驗證 bookinfo 部署狀況架構
4 設置 bookinfo 網關app
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,請加微信羣,咱們一塊兒進步:
2 bookinfo 架構介紹
bookinfo 是 istio 的學習樣例,經過 bookinfo 你能夠對 istio 提供的路由、遙測等功能有更加深刻的理解。
下圖是 bookinfo 在沒有嵌入 istio 前的物理架構圖:
bookinfo 是一個在線書店應用,該應用由 4 個微服務組成,分別爲 Product page、Reviews、Details 和 Ratings。爲了表現 istio 的無侵入性,這 4 個微服務分別由 python、java、ruby 和 node 開發。下面分別說明以下:
Product page:聚合服務,內容由 Reviews 和 Details 內容聚合而成
Details:圖書詳情服務
Reviews:圖書評價服務(多版本)。它也是一個聚合服務,聚合了 Ratings
Ratings:圖書預訂排名服務
下圖是 bookinfo 嵌入 istio 後的物理架構圖:
該架構圖演示了嵌入 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
命令操做成功後截圖以下:
3.2 部署 bookinfo 應用
在命名空間 jiuxi 中部署了 bookinfo 應用:
kubectl apply -f bookinfo/platform/kube/bookinfo.yaml -n jiuxi
部署過程截圖以下:
執行以下命令查看 bookinfo 的 service 列表:
kubectl get svc -n jiuxi
服務列表截圖以下:
執行以下命令查看 bookinfo 的 pod 列表:
kubectl get pod -n jiuxi
3.3 驗證 bookinfo 部署狀況
在服務列表中尋找 productpage 服務,而後使用 curl 命令驗證服務是否發佈成功。
kubectl get svc -n jiuxi
curl http://SVC_CLUSTER_IP:9080 | grep -o "<title>.*</title>"
執行成功的結果以下截圖所示:
自此,整個 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
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 信息,以下截圖所示:
根據此 host 和 port,打開瀏覽器進行訪問:
多刷新幾回頁面,你會發現 bookinfo 應用使用到的多個 reviews 版本,以下所示:
正好能夠對應到 pod 信息:
6 卸載 bookinfo 應用
你已經建立了 bookinfo,有了建立的快感。也許你有點悵然若失,由於你以爲你的技術人生不夠圓滿,你想親身完爆你建立的一切,那麼還等什麼,執行下面的語句吧:
./istio-1.4.5/samples/bookinfo/platform/kube/cleanup.sh
命令執行成功後,會顯示以下截圖:
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 應用。相信在操做的過程當中,你還有不少不理解的地方,可是不要緊,後續九析會爲你庖丁解牛的。你須要作的,就是跟着九析操做一遍,熟悉一下整個流程,後續某天你必定會在某個瞬間大聲尖叫:「我獲得了」。