天天看點

雲原生 - 體驗Istio的完美入門之旅(一)

作者:justmine 頭條号:大資料與雲原生 微信公衆号:大資料與雲原生 創作不易,在滿足創作共用版權協定的基礎上可以轉載,但請以超連結形式注明出處。 為了友善大家閱讀,可以關注頭條号或微信公衆号,後續所有的文章将在移動端首發,想學習更多雲原生知識,請關注我。

随着微服務架構的流行,服務網格技術獲得了業界的廣泛關注,作為實作雲原生的重要積木,各大廠商也紛紛開始布局,Amazon在2019年4月份推出了App Mesh;Google、IBM、Lyft聯合開發了Istio。

Istio作為下一代服務網格的整體解決方案,得到了業界的普遍認可,站在kubernetes巨人的肩膀上,極大地提高了分布式應用的研發和運維效率。

2020是雲原生普及的一年,如何部署、使用、運維Istio又是必須要學習知識,本篇希望帶給大家一個完美的入門體驗。

本地環境:Linux ubuntu

kubernetes版本:1.15.2

從Istio最新釋出清單下載下傳最新釋出版本1.4.3壓縮包,及其指令行工具(Istioctl),如下:

話外音:請下載下傳相同版本的Istioctl和Istio,避免無法預料的問題。

為了滿足不同的安裝需求,Istio内置了一系列的安裝配置檔案,生産環境建議以<code>default</code>安裝配置檔案為起點。

話外音:可以使用<code>istioctl profile list</code>指令檢視内置配置檔案清單,然後使用<code>istioctl profile dump [配置檔案名稱]</code>列印配置檔案内容。

等待幾分鐘,當所有的元件狀态都為Running時,表示安裝成功。

通過将基礎設施轉移到Istio,使得應用開發者無需重複建設基礎設施,隻需專注于業務邏輯。Istio負責管理整個應用服務集合,這些服務集合組成的網絡拓撲就叫服務網格,Istio提供了kiali來可視化整個服務網格。

使用NodePort方式暴露kiali服務到網際網路,如下:

話外音:應該根據<code>k8s</code>環境選擇不同聯網方式,生産環境建議暴露為<code>LoadLalancer</code>。

浏覽器鍵入位址<code>http://[ip]:9527/kiali</code>,鍵入上面建立的憑證,登入成功,如下:

雲原生 - 體驗Istio的完美入門之旅(一)

本節将部署一個多語言異構化的微服務示例(Bookinfo),讓大家對服務網格有一個清晰的認識。

<code>productpage</code>微服務

調用<code>details</code>和<code>reviews</code>微服務,提供圖書單品完整資訊。

<code>details</code>微服務

提供圖書詳細資訊。

<code>reviews</code>微服務

提供圖書評論資訊。

一共有三個版本。v1版本不會調用<code>ratings</code>微服務;v2版本調用<code>ratings</code>服務,并将每個等級顯示為1到5個黑色星号;v3版本調用<code>ratings</code>服務,并将每個等級顯示為1到5個紅色星号。

<code>ratings</code>微服務

提供圖書星級評分資訊。

一圖勝千言,整體架構如下:

雲原生 - 體驗Istio的完美入門之旅(一)

将Bookinfo部署到k8s預設命名空間,即default。

備注:生産環境一般使用<code>istio-ingressgateway</code>作為聯網的唯一出入口。
雲原生 - 體驗Istio的完美入門之旅(一)

不停地重新整理圖書單品頁,kiali會實時地繪制服務網格,如下:

雲原生 - 體驗Istio的完美入門之旅(一)

基于權重流量的實時控制,如下:

雲原生 - 體驗Istio的完美入門之旅(一)

對于服務的可觀察性,kiali還提供了很多其他的功能,這也是Istio相較于其他服務網格架構的優勢,這裡就不展示了。

本篇使用Istioctl搭建了一套完整的Istio系統,先從戰略上鳥瞰Istio,進一步從戰術上學習Istio将更加容易,作為一個完整解決方案,後面系列将一步步學習如何運用Istio的連接配接、安全、控制、可觀察性全面地治理分布式應用。

話外音:到目前為止,大家應該明白Istio是個什麼東東了吧。

https://github.com/istio/istio/releases

https://istio.io/docs/setup/additional-setup/config-profiles

https://istio.io/docs/setup/getting-started

https://istio.io/docs/setup/install/istioctl/#customizing-the-configuration

https://istio.io/docs/reference/commands/istioctl

https://istio.io/docs/ops/diagnostic-tools/istioctl

https://istio.io/news/releases/1.4.x/announcing-1.4.3

https://istio.io/docs/examples/bookinfo

https://istio.io/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports

如果有什麼疑問和見解,歡迎評論區交流。

如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】。

如果你對雲原生感興趣的話可以【關注我】。

做一個有底蘊的軟體工作者

繼續閱讀