315 · Istio1.1 功能預告,真的假不了
Istio 1.0版本釋出到現在,已經過去8個月。Istio1.1的候選版本也到了rc5,預計近期會正式釋出1.1。此版本包含了許多錯誤修復,在流量管理,安全,策略和遙測,多叢集等領域添加了新的功能。
對1.0的使用者來說,感受最強烈的是:
- 預設關閉了策略執行功能
- 預設開啟了Mesh外的訪問,再也不用擔心未配置ServiceEntry對外的訪問突然不通了。
- 多叢集不再只是1.0那種扁平網路的簡單方案,提供了單控制面、多控制面幾種方案,可以根據自己的場景需求選擇。
- 安全上SDS也終於來了提供更靈活的安全基礎能力。
- 效能上做了多點優化,總體表現值得期待。
另外1.1提供了很多新的能力,在配置使用上也會有所不同,雖然不至於像0.8到1.0引入V1alph3導致介面大變樣那麼誇張,但API的使用確實值得我們去注意。最直觀的感受將是,原來的結構上欄位突然多了很多。
Istio社群對1.1釋出的初步文件已經在istio.io上提供,今天我們就率先為容器魔方粉絲獻上中文版的功能預告
流量管理
新的sidecar:資源:在指定名稱空間中使用sidecar資源時,支援定義可訪問的服務範圍,這樣可以降低發給proxy的配置數量。在大規模的叢集中,我們推薦給每個namespace增加sidecar物件。 這個功能主要是為了提升效能,減輕proxy計算的負擔。
限制網路資源的生效範圍:為所有的網路資源增加了exportTo的欄位,用來表示此網路資源在哪些namespace中生效。這個欄位目前只有兩個值:
- . 表示此網路資源只在自己定義的namespace生效;
- *表示此網路資源在所有的namespace生效。
更新了serviceEntry的資源:指定服務的位置以及使用雙向TLS關聯的SAN。帶HTTPS埠的service entry不再需要額外的virtualservice來開啟基於SNI的路由。
細粒度的多叢集路由:簡化了多叢集的安裝,並支援額外部署模式,能夠利用ingress gateways連線多個叢集,而不使用pod級別的VPN。在每個叢集中都部署控制面以提供高可用,跨叢集建立全域性的名稱空間。在高可用控制面方案中,預設開啟AZ/Region的區域感知能力,降低跨區請求造成的效能損耗。
棄用Istio Ingress:刪除了以前棄用的Istio ingress。
安全
Readiness and Liveness 探針:在雙向TLS啟用的場景下支援Kubernetes HTTP readiness和liveness探針。
叢集RBAC配置:使用ClusterRbacConfig資源物件替代原來的RbacConfig。ClusterRbacConfig支援叢集範圍的配置。
基於SDS的身份設定:On-node祕鑰生成和動態證書替換不用重啟Envoy。
TCP授權管理:除了HTTP和gRPC外,支援對TCP服務的授權管理。
終端使用者組授權管理:支援JWT中組宣告或者列表型別的宣告。
每路徑終端使用者認證:可以啟用和禁用基於訪問路徑的JWT認證。
Gateway上外部證書管理:支援動態載入和替換外部證書。
整合Vault PKI:提供Vault保護的祕鑰簽名並與現有Vault PKI整合。
自定義的可信域:在身份標識中支援特定org或cluster的安全域。
多叢集
不可路由的L3網路:在不可路由的L3網路多叢集環境中使用一個Istio 控制面。
多控制平面:在多叢集環境中,支援安裝多個Istio控制平面。
策略和遙測
預設關閉策略檢查功能:為了提高多數客戶場景下的效能,安裝時預設關閉策略檢查, 後期可按需開啟此功能。
Kiali:棄用ServiceGraph,推薦使用 Kiali:提供了更豐富的視覺化體驗。
多方面降低開銷 ,提升效能和可擴充套件性:
減少Envoy生成的統計資料的預設收集
為Mixer的工作負載增加load-shedding功能
改進Envoy和Mixer的通訊協議
控制請求頭和路由:增加選項使介面卡可以修改請求頭和路由。
程序外介面卡:程序外介面卡功能生產可用,下個release棄用程序內介面卡。
多方面增強Tracing的能力:
Trace id支援128bit的範圍
支援向LightStep傳送追蹤資料
增加選項完全禁用Mixer支援的服務的追蹤功能
增加策略的decision-aware 追蹤
預設的TCP指標:為追蹤TCP連線增加預設指標。
配置管理
Galley:Galley在Istio中提供主要的配置管理和分發機制。它提供了一個健全的模型來驗證,轉換和分發配置狀態到Istio各元件,使Istio元件與Kubernetes的細節隔離。Galley使用Mesh Configuration Protocol(MCP)和元件互動。
監控埠:Galley的預設監控埠從9093改為15014。
istioctl和kubectl
校驗命令:為 Istio Kubernetes 的資源增加離線校驗命令—— istioctl validate。
驗證安裝命令:在使用指定的YAML檔案安裝Istio前,可以用istioctl experimental verify-install 來預先檢驗Istio的安裝狀態。
棄用的命令:棄用 istioctl create,istioctl replace, istioctl get 和 istioctl delete,使用 kubectl 代替;棄用 istioctl gen-deploy,使用helm template代替。下個版本(1.2)將刪除這些命令。
命令的縮寫: 用kubectl操作Istio網路資源時可以使用縮寫,例如: gateways簡寫為gw,virtualservice簡寫為vs等等。
升級
Istio Helm 配置的更改:
預設關閉Egressgateway
預設關閉Mixer policy
預設允許所有出口流量(不用配置service entry),出口流量策略設定為ALLOW_ANY