Sidecar 還是 Ambient?

一個 Istio 服務網格在邏輯上分為資料平面和控制平面。

資料平面是調解和控制微服務之間所有網路通訊的代理程式集合。它們還收集和報告所有網格流量的遙測數據。

控制平面管理和配置資料平面中的代理程式。

Istio 支援兩種主要的 資料平面模式

  • sidecar 模式,它會在您在叢集中啟動的每個 Pod 旁邊部署一個 Envoy 代理,或者在虛擬機器上運行的服務旁邊運行。
  • ambient 模式,它使用每個節點的第 4 層代理,以及可選的每個命名空間的 Envoy 代理,用於第 7 層功能。

您可以選擇將某些命名空間或工作負載加入到每種模式中。

Sidecar 模式

Istio 從 2017 年首次發佈以來,就建立在 sidecar 模式的基礎上。Sidecar 模式廣為人知且經過徹底的實戰測試,但會帶來資源成本和操作開銷。

  • 您部署的每個應用程式都會有一個 Envoy 代理以 Sidecar 的方式 注入
  • 所有代理程式都可以處理第 4 層和第 7 層

Ambient 模式

Ambient 模式於 2022 年推出,旨在解決 Sidecar 模式使用者回報的缺點。從 Istio 1.22 版本開始,它已準備好用於單叢集使用案例的生產環境。

  • 所有流量都通過僅限第 4 層的節點代理進行代理
  • 應用程式可以選擇通過 Envoy 代理進行路由,以獲得第 7 層功能

Sidecar 和 Ambient 模式的選擇

使用者通常會部署網格以啟用零信任安全態勢作為第一步,然後根據需要有選擇地啟用 L7 功能。當不需要時,Ambient 網格允許這些使用者完全繞過 L7 處理的成本。

SidecarAmbient
流量管理完整的 Istio 功能集完整的 Istio 功能集(需要使用 waypoint)
安全性完整的 Istio 功能集完整的 Istio 功能集:ambient 模式中的加密和 L4 授權。L7 授權需要使用 waypoint。
可觀察性完整的 Istio 功能集完整的 Istio 功能集:ambient 模式中的 L4 遙測;使用 waypoint 時的 L7 可觀察性
擴展性完整的 Istio 功能集完整的 Istio 功能集(需要使用 waypoint)α
將工作負載新增到網格標記命名空間並重新啟動所有 Pod 以新增 sidecar標記命名空間 - 無需重新啟動 Pod
增量部署二進制:sidecar 要麼注入,要麼不注入漸進式:L4 始終開啟,L7 可以透過組態新增
生命週期管理代理程式由應用程式開發人員管理平台管理員
資源利用浪費;CPU 和記憶體資源必須針對每個單獨 Pod 的最差情況使用進行配置Waypoint 代理程式可以像任何其他 Kubernetes 部署一樣自動擴展。
具有許多副本的工作負載可以使用一個 waypoint,而不是每個副本都有自己的 Sidecar。
平均資源成本
平均延遲 (p90/p99)0.63 毫秒 - 0.88 毫秒Ambient:0.16 毫秒 - 0.20 毫秒
Waypoint:0.40 毫秒 - 0.50 毫秒
L7 處理步驟2(來源和目的地 sidecar)1(目的地 waypoint)
大規模組態需要 配置每個 sidecar 的範圍以減少配置無需自訂配置即可工作
支援「伺服器優先」協定需要配置
支援 Kubernetes Jobs由於 sidecar 的生命週期較長而變得複雜透明
安全模型最強:每個工作負載都有自己的金鑰強:每個節點代理程式僅擁有該節點上工作負載的金鑰
受損的應用程式 Pod
允許存取網格金鑰
支援穩定,包括多叢集Beta,單叢集
支援的平台Kubernetes (任何 CNI)
虛擬機器
Kubernetes (任何 CNI)

第四層 (Layer 4) vs 第七層 (Layer 7) 功能

在第 7 層處理協定的開銷遠高於在第 4 層處理網路封包的開銷。對於給定的服務,如果您的需求可以在 L4 滿足,則可以以大幅降低的成本提供服務網格。

安全性

L4L7
加密Pod 之間的所有流量都使用 mTLS 進行加密。不適用 — Istio 中的服務身份基於 TLS。
服務對服務身份驗證透過 mTLS 憑證的 SPIFFE。Istio 會發出一個短期的 X.509 憑證,其中編碼了 Pod 的服務帳戶身份。不適用 — Istio 中的服務身份基於 TLS。
服務對服務授權基於網路的授權,加上基於身份的策略,例如:
  • A 只能接受來自「10.2.0.0/16」的傳入呼叫;
  • A 可以呼叫 B。
完整策略,例如:
  • A 只有在具有包含 READ 範圍的有效最終使用者憑證的情況下,才能在 B 上 GET /foo。
最終使用者身份驗證不適用 — 我們無法套用每個使用者的設定。JWT 的本機身份驗證,支援透過 OAuth 和 OIDC 流程進行遠端身份驗證。
最終使用者授權不適用 — 請參閱以上內容。服務對服務策略可以擴展為要求 具有特定範圍、發行者、主體、受眾等的最終使用者憑證
可以使用外部授權來實作完整的使用者對資源存取,允許來自外部服務(例如 OPA)的每個請求策略具有決策。

可觀察性

L4L7
記錄基本網路資訊:網路 5 元組、已傳送/接收的位元組等。請參閱 Envoy 文件完整請求中繼資料記錄,以及基本網路資訊。
追蹤目前沒有;最終可能透過 HBONE 實現。Envoy 參與分散式追蹤。請參閱 Istio 追蹤概觀
指標僅限 TCP(已傳送/接收的位元組、封包數等)。L7 RED 指標:請求率、錯誤率、請求持續時間(延遲)。

流量管理

L4L7
負載平衡僅限連線層級。請參閱 TCP 流量轉移任務每個請求,啟用例如 Canary 部署、gRPC 流量等。請參閱 HTTP 流量轉移任務
斷路器僅限 TCP.除了 TCP 之外,還有 HTTP 設定
離群值偵測在連線建立/失敗時。在請求成功/失敗時。
速率限制僅限在連線建立時對 L4 連線資料進行速率限制,具有全域和本機速率限制選項。對每個請求的 L7 請求中繼資料進行速率限制
逾時僅限連線建立(連線保持運作透過斷路器設定進行配置)。每個請求。
重試重試連線建立重試每個請求失敗。
故障注入不適用 — 無法在 TCP 連線上配置故障注入。完整的應用程式和連線層級故障 (逾時、延遲、特定回應碼)。
流量鏡像不適用 — 僅限 HTTP將請求百分比鏡像到多個後端.

不支援的功能

以下功能在 sidecar 模式中可用,但尚未在 ambient 模式中實作

  • Sidecar 到 waypoint 的互通性
  • 多叢集安裝
  • 多網路支援
  • 虛擬機器支援
這個資訊對您有幫助嗎?
您有任何改進的建議嗎?

感謝您的回饋!