接下來來介紹一下Kubernetes中,Service Mesh 的一個開源解決方案 "Istio"
Istio 可以為我們建立具有負載平衡、Service之間個身分驗證、Monitoring 等功能的微服物網路,而服務代碼中的代碼更改很少或沒有更改。Istio 透過在 Kubernetes 環境中部署一個特殊的 sidecar proxy 來擷取微服務之間的所有網路通訊,然後使用 Control Plane 功能設定和管理 Istio,其功能如下所述:
Istio 的規則配置和路由可以使得我們可以控制服務之間的流量。Istio 簡化了像是circuit breaker、timeouts 和 retries 之類的屬性設定,並使得他能夠簡單地完成一些重要的任務,像是A/B測試、金絲雀部署及分階段部署。
藉由對於流量有更好的觀察性及故障恢復能力,不論遇到什麼情況,都可以在引起問題發生前及時發生問題,使得微服務網路更加可靠。
Istio 提供基本的安全通道,並可管理服務通訊的身分驗證、授權及加密。藉由 Istio,在預設的情況下可以保護通訊的安全,無須更改應用程式,就可以使得我們微服務之間有基本的安全保障。
雖然 Istio 沒有相依於 Kubernetes,但將 Istio 配合 Kubernetes 使用,能在網路的 OSI 模型中的第七層保護 POD 與 POD 之間或服務與服務之間的通訊能力
Istio 擁有強大的追蹤、和Log記錄能力,能夠使的管理者更了解 Service Mesh 的運作狀況。我們藉由 Istio 的監控能力,可以真正的了解到微服務的效能如何影響到整個通訊的傳遞,也可透過自定義視覺化面板來監控整體 Service Mesh的狀況。
而 Istio 的 Mixer 元件就是負責 Policy Control 及 Telemetry Collection,它提供了Backend Abstraction 和 Intermediation,使得 Istio 的基礎架構的後端實作具有較低的耦合性。
這些功能都能讓我們更有效地來配置Istio,能夠使我們快速有效的檢測及修復 Service Mesh 通訊的問題。
Istio 是可以在多種雲環境中運作的,包括跨Cloud、Kubernetes、Mesos等環境中都可是可以運作的。
Istio的策略執行組件可以擴展和定制,以與現有的ACL,日誌記錄,監控,配額,審核等解決方案集成。