istio 是 google 所開源的一個項目,也就是跟 k8s 是同門師兄弟,他主要用途就是拿來做 k8s cluster 間的 service mesh。
對於任何網路應用程式來說,都有很多共通的行為,像是 load balance、不同服務間的身份驗證、替服務做 A/B test,也就是讓工程師可以更專注在應用程式上面的商業邏輯,而不用去考量,我如果需要 call api ,網路底層這些安全性、測試、效能要怎麼做設置,甚至未來上線後,特定需求下我需要做速率限制、實驗性功能要透過金絲雀發布法發布...這些議題。這就是 service mesh。
從上面的圖可以看到,istio ,其實會做到無痛在 k8s 的 POD 裡面,注入一個 container ,也就是上面所指的 sidecare,透過它來控制服務間的溝通,進而去做到各種溝通上的管理跟監控。
通過負載平衡、服務間的身份驗證、監控等方法,Istio 可以輕鬆地創建一個已經部署了服務的網路,而服務只需很少更改甚至無需更改。通過在整個環境中部署一個特殊的 sidecar 代理為服務加入 Istio ,而代理會攔截微服務之間的所有網路訊號,然後使用其控制平面的功能來配置和管理 Istio,這包括:
這在設計模式來說,有一個叫做 sidecar pattern的模式,有一篇文章寫得不錯建議大家可以去補充閱讀 邊車模式 (The Sidecar Pattern) - 介紹