前言
Istio 1.11
是 Istio 在 2021 年發佈的第三個版本,正式支持 Kubernetes 版本 1.18.0
到 1.22.x
。以下是此版本的一些亮點。
CNI 插件(Beta)
默認情況下,Istio 會在部署在網格的 pod 中注入一個 init 容器。istio-init
容器使用 iptables 設置 pod 網絡流量重定向到(來自)Istio sidecar 代理。這需要網格中部署 pod 的用戶或服務賬戶有足夠的權限來部署具有 NET_ADMIN
和 NET_RAW
功能的容器。要求 Istio 用戶擁有較高的 Kubernetes 權限,對於組織內的安全合規性來說是有問題的。Istio CNI 插件是 istio-init
容器的替代品,它執行相同的網絡功能,但不要求 Istio 用戶啓用更高的 Kubernetes 權限。
CNI 插件可以與其他插件同時使用,並支持大多數託管的 Kubernetes 實現。
在這個版本中,我們通過改進文檔和測試,將 CNI 插件功能提升爲 Beta 版,以確保用戶能夠在生產中安全地啓用這一功能。瞭解如何用 CNI 插件安裝 Istio。
外部控制平面(Beta)
去年,我們爲 Istio 引入了一種新的部署模式,即集羣的控制平面是在該集羣之外管理的。這就解決了這樣一個問題 —— 將管理控制平面的 Mesh 所有者和在 Mesh 中部署和配置服務的 Mesh 用戶之間分離。運行在獨立集羣中的外部控制平面可以控制單個數據平面集羣或多集羣網格的多個集羣。
在 1.11 版本中,該功能已被提升爲 Beta 版。瞭解如何設置帶有外部控制平面的網格。
網關注入
Istio 提供了網關作爲與外部世界連接的方式。你可以部署入口網關和出口網關,前者用於接收來自集羣外的流量,後者用於從你的應用程序向集羣外部署的服務輸出流量。
在過去,Istio 版本會將網關部署爲一個 Deployment
,它的代理配置與集羣中所有其他的 Sidecar 代理完全分開。這使得網關的管理和升級變得複雜,特別是當集羣中部署了多個網關時。一個常見的問題是,從控制平面傳到 sidecar 代理的設置和網關可能會漂移,導致意外的問題。
網關注入將對網關的管理變得與一般的 sidecar 代理相同。在代理上設置的全局配置將適用於網關,以前不可能的複雜配置(例如,將網關作爲 DaemonSet 運行)現在很容易。在集羣升級後,你也可以簡單地通過重啓 pod 將網關更新到最新版本。
除了這些變化之外,我們還發布了新的安裝網關文檔,其中包括安裝、管理和升級網關的最佳做法。
對修訂和標籤部署的更新
在 Istio 1.6 中,我們增加了對同時運行多個控制平面的支持,這使得你可以對新的 Istio 版本進行金絲雀式部署。在 1.10 版本中,我們引入了修訂標籤(revision tag),這讓你可以將一個修訂版標記爲 production
或 testing
,並在升級時將出錯的機會降到最低。
istioctl tag
命令在 1.11 中已經不再是實驗性了。你現在也可以爲控制平面指定一個默認的修訂版。這有助於進一步簡化從無修訂版的控制平面到新版本的金絲雀升級。
我們還修復了一個關於升級的懸而未決的問題 —— 你可以安全地對你的控制平面進行金絲雀升級,不管它是否使用修訂版安裝。
爲了改善 sidecar 的注入體驗,引入了 istio-injection
和 sidecar.istio.io/inject
標籤。我們建議你使用注入標籤,因爲比注入註解的性能更好。我們打算在未來的版本中棄用注入註解。
支持 Kubernetes 多集羣服務(MCS)(實驗性)
Kubernetes 項目正在建立一個多集羣服務 API,允許服務所有者或網格管理員控制整個網格的服務及其端點的輸出。
Istio 1.11 增加了對多集羣服務的實驗性支持。一旦啓用,服務端點的可發現性將由客戶端位置和服務是否被導出決定。駐留在與客戶端相同的集羣中的端點將總是可被發現。然而,在不同集羣內的端點,只有當它們被導出到網格時,纔會被客戶端發現。
注意,Istio 還不支持 MCS 規範所定義的 cluster.local
和 clusterset.local
主機的行爲。客戶應該繼續使用 cluster.local
或 svc.namespace
來稱呼服務。
這是我們支持 MCS 計劃第一階段。請繼續關注!
預告:新的 API
Istio 的一些功能只能通過 EnvoyFilter 來配置,它允許你設置代理配置。我們正在爲常見的用例開發新的 API —— 比如配置遙測和 WebAssembly(Wasm)擴展部署,在 1.12 版本中你可以看到這些功能。如果你有興趣幫助我們測試這些實現,請加入工作組會議。
小結
此次 Istio 的更新,總的來說Beta 驚喜,Release 平淡
。給人的感覺就是想等下一個版本再升級,讓我們一起期待下一個版本吧。
延伸閱讀
- Istio 1.12 Alpha 驚喜,Release 平淡
- Istio 1.10 全新官網&開放前行
- Istio 1.9 改善生產環境體驗
- Istio 1.8 穩健前進
- Istio 1.7 任性的小子
- Istio 1.6 簡化以提升用戶體驗
- Istio 1.5 擁抱單體,簡化架構