使用 Istio API (代管控制層) 支援的功能

本頁面說明使用 TRAFFIC_DIRECTOR 或 ISTIOD 做為控制層時,Cloud Service Mesh 支援的功能和限制,以及各項實作之間的差異。請注意,這些並非可供選擇的選項。ISTIOD 導入作業僅適用於現有使用者。 新安裝項目會盡可能使用 TRAFFIC_DIRECTOR 實作。

如需受管理 Cloud Service Mesh 搭配TRAFFIC_DIRECTOR支援的 Istio 和 Google Cloud API 清單,請參閱「受管理 Cloud Service Mesh 的 API 支援」。

如要查看叢集內控制層支援的 Cloud Service Mesh 功能清單,請參閱「使用 Istio API (叢集內 istiod 控制層)」。

如果不確定使用的是哪種 Cloud Service Mesh 控制層,請按照「識別控制層實作」一節的指示,檢查控制層實作。

限制

限制如下:

  • GKE 叢集必須位於支援的區域。
  • GKE 版本必須是支援的版本。
  • 僅支援「環境」中列出的平台。
  • 不支援使用 hostNetwork: true 執行的 Pod。
  • 如果叢集內已部署 OSS Istio 或 Cloud Service Mesh 控制層,則不得在該叢集部署代管 Cloud Service Mesh。
  • 不支援變更發布版本。
  • 不支援從採用 asmcli 的代管 Cloud Service Mesh 遷移至採用 Fleet API 的 Cloud Service Mesh。同樣地,不支援使用 Fleet API 將代管 Cloud Service Mesh 從 --management manual 佈建至 --management automatic。
  • 從叢集內 Cloud Service Mesh 遷移時,只能使用初期測試叢集遷移策略。
  • 只有在叢集內 Cloud Service Mesh 版本列於「支援的版本」表格,且使用 Mesh CA 或憑證授權單位服務時,才支援遷移和升級。如果安裝時使用 Istio CA (舊稱 Citadel),必須先遷移至 Mesh CA。
  • 如要瞭解規模限制,請參閱這份指南
  • 多叢集僅支援多主叢集部署選項,不支援主遠端部署選項。
  • 系統不支援「istioctl ps」,請改用「疑難排解」一節所述的 gcloud beta container fleet mesh debug 指令。
  • 不支援的 API:

    • WasmPlugin 個 API

    • IstioOperator 個 API

    • Kubernetes Ingress 個 API

  • 如要進一步瞭解所有 Istio API 的欄位層級支援和限制,請參閱「Cloud Service Mesh API 支援」。

  • 您不需訂閱 GKE Enterprise,即可使用代管控制層,但 Google Cloud 控制台中的某些 UI 元素和功能僅供 GKE Enterprise 訂閱者使用。如要瞭解訂閱者和非訂閱者可使用的功能,請參閱「GKE Enterprise 和 Cloud Service Mesh UI 差異」。

  • 在佈建代管控制層的過程中,系統會將與所選管道對應的 Istio CRD 安裝到指定叢集。如果叢集中已有 Istio CRD,系統會覆寫這些 CRD。

  • 代管 Cloud Service Mesh 僅支援預設 DNS 網域 .cluster.local。

  • 新安裝的代管 Cloud Service Mesh 只會使用 Envoy 擷取 JWKS,除非機群包含其他未啟用該行為的叢集。這相當於 PILOT_JWT_ENABLE_REMOTE_JWKS=envoy Istio 選項。與沒有 VPCSC_GA_SUPPORTED 條件的安裝作業相比 (請參閱下文),您可能需要額外設定 ServiceEntry 和 DestinationRule。如需範例,請參閱 requestauthn-with-se.yaml.tmpl。您可以判斷控制層是否支援 VPC Service Controls (即顯示 VPCSC_GA_SUPPORTED 條件),藉此判斷目前的作業模式是否等同於 PILOT_JWT_ENABLE_REMOTE_JWKS=envoy。

  • 代管資料層僅支援不含額外 sidecar (Cloud Service Mesh sidecar 除外) 的工作負載。

控制層差異

ISTIOD 和 TRAFFIC_DIRECTOR 控制層實作方式支援的功能有所不同。如要確認您使用的實作方式,請參閱「識別控制層實作方式」。

  • :表示功能可用,且預設為啟用。
  • † - 表示功能 API 在不同平台之間可能有所差異。
  • *:表示平台支援該功能,且可啟用,如啟用選用功能或功能表連結的功能指南所述。
  • :表示功能無法使用或不支援。

Google Cloud支援團隊會全力支援預設和選用功能。未明確列在表格中的功能,則會盡可能提供支援。

控制層實作方式的決定因素

首次在機群中佈建代管 Cloud Service Mesh 時,我們會決定要使用哪種控制層。在該機群中,所有佈建代管 Cloud Service Mesh 的叢集都會使用相同的實作。

新機群加入代管 Cloud Service Mesh 後,會採用 TRAFFIC_DIRECTOR 控制層,但有下列例外狀況:

  • 如果您是現有的代管 Cloud Service Mesh 使用者,在同一個 Google Cloud組織中將新機群加入代管 Cloud Service Mesh 時,會收到ISTIOD控制層實作,直到 2024 年 6 月 30 日為止。如果您是這類使用者,可以聯絡支援團隊,微調這項行為。如果使用者現有的使用方式與 TRAFFIC_DIRECTOR 實作不相容,且未進行變更,則在 2024 年 9 月 8 日前,仍會繼續收到 ISTIOD 實作。(這些使用者會收到服務公告)。
  • 佈建代管 Cloud Service Mesh 時,如果機群中的任何 GKE on Google Cloud 叢集包含叢集內 Cloud Service Mesh 控制層,您會收到 ISTIOD 控制層實作。
  • 如果機群中的任何叢集使用 GKE Sandbox,則佈建代管 Cloud Service Mesh 時,您會收到 ISTIOD 控制層實作。

代管控制層支援的功能

安裝、升級和復原

功能 代管 (TD) 代管 (istiod) 已淘汰
使用機群功能 API 在 GKE 叢集上安裝
從使用 Mesh CA 的 ASM 1.9 版本升級
從 1.9 之前的 Cloud Service Mesh 版本直接 (跳級) 升級 (請參閱間接升級注意事項)
從 Istio OSS 直接 (跳級) 升級 (如需間接升級,請參閱附註)
從 Istio-on-GKE 外掛程式直接 (跳級) 升級 (請參閱間接升級注意事項)
啟用選用功能

環境

功能 代管 (TD) 代管 (istiod) 已淘汰
目前在發布管道中提供的 GKE 版本,位於支援的區域
目前在發布管道中提供的 GKE 版本,位於支援的區域,GKE Autopilot 叢集
Google Cloud 以外的環境 (GKE Enterprise 地端部署、其他公有雲上的 GKE Enterprise、Amazon EKS、Microsoft AKS 或其他 Kubernetes 叢集)

規模

請參閱擴充性限制頁面

平台環境

功能 代管 (TD) 代管 (istiod) 已淘汰
單一網路
多網路
單一專案
使用 Shared VPC 的多專案

多叢集部署

功能 代管 (TD) 代管 (istiod) 已淘汰
多重主要版本
主要遠端
使用宣告式 API 探索多叢集端點
使用遠端 Secret 探索多叢集端點
使用宣告式 API 和簡易拓撲,探索多叢集端點

術語說明

  • 多重主要設定代表設定必須在所有叢集中複製。
  • 主要遠端設定是指單一叢集包含設定,並視為可靠資料來源。
  • Cloud Service Mesh 採用簡化的網路定義,以一般連線能力為基礎。如果工作負載執行個體可以直接通訊,不需透過閘道,就表示這些執行個體位於同一個網路。
  • 多叢集端點探索的簡易拓撲,是指機群中的每個叢集都會參與或不參與端點探索。不支援的複雜拓撲包括:(a) 單向端點探索 (例如叢集 A 可以探索叢集 B 中的端點,但反之則不行);(b) 脫節的端點探索網路 (例如叢集 A 和 B 可以探索彼此的端點,叢集 C 和 D 可以探索彼此的端點,但 A/B 和 C/D 無法探索彼此的端點)。

底層映像檔

功能 代管 (TD) 代管 (istiod) 已淘汰
Distroless Proxy 映像檔 †

† Istio 會發布 default、debug 和 distroless Proxy 映像檔。如果 Cloud Service Mesh 採用代管 (TRAFFIC_DIRECTOR) 控制層,直接上線的叢集預設會使用 distroless,且無法變更。遷移後的叢集預設會使用 default 映像檔,並可透過 MeshConfig 或 Pod 註解選擇加入 distroless。不支援覆寫其他圖片類型 (debug)。

請注意,distroless 映像檔的二進位檔極少,因此您無法執行 bash 或 curl 等一般指令,因為 distroless 映像檔中沒有這些指令。不過,您可以使用臨時容器附加至執行中的工作負載 Pod,以便檢查 Pod 並執行自訂指令。例如,請參閱「收集 Cloud Service Mesh 記錄」。

安全性

VPC Service Controls

功能 代管 (TD) 代管 (istiod) 已淘汰
VPC Service Controls

憑證發布和輪替機制

功能 代管 (TD) 代管 (istiod) 已淘汰
工作負載憑證管理
ingress 和 egress 閘道的外部憑證管理。

憑證授權單位 (CA) 支援

功能 代管 (TD) 代管 (istiod) 已淘汰
Cloud Service Mesh 憑證授權單位
憑證授權單位服務
Istio CA
與自訂 CA 整合

安全防護功能

除了支援 Istio 安全防護功能,Cloud Service Mesh 還提供更多功能,協助您保護應用程式。

功能 代管 (TD) 代管 (istiod) 已淘汰
IAP 整合
使用者驗證
模擬測試模式
拒絕記錄
稽核政策 (不支援)

授權政策

功能 代管 (TD) 代管 (istiod) 已淘汰
授權 v1beta1 政策
自訂授權政策

同類應用程式驗證

功能 代管 (TD) 代管 (istiod) 已淘汰
自動 mTLS
mTLS PERMISSIVE 模式
mTLS 嚴格模式 * *
mTLS DISABLE 模式 †

† 雖然 PeerAuthentication API 不支援 TRAFFIC_DIRECTOR 控制層實作的 DISABLE 模式,但您可以使用 DestinationRule API 停用特定服務或通訊埠的 mTLS。詳情請參閱「停用 mTLS」和「API 支援:PeerAuthentication」。

要求驗證

功能 代管 (TD) 代管 (istiod) 已淘汰
JWT 驗證(附註 1)
依據 JWT 聲明轉送
JWT Copy Claim to Headers

注意:

  1. 第三方 JWT 預設為啟用。
  2. 定義 RequestAuthentication API 時,請在 JWKSURI 中新增完整的 FQDN/主機名稱。
  3. 指定 JWKS URI 時,代管控制層會強制 Envoy 擷取 JWKS。
  4. 使用 TRAFFIC_DIRECTOR 控制層實作時,內嵌 JWKS 不允許使用 AES CBC 演算法 A128CBC-HS256、A192CBC-HS384 和 A256CBC-HS512。

遙測

指標

功能 代管 (TD) 代管 (istiod) 已淘汰
Cloud Monitoring (HTTP Proxy 內指標)
Cloud Monitoring (TCP Proxy 內指標)
將 Prometheus 指標匯出至 Grafana (僅限 Envoy 指標) * *
將 Prometheus 指標匯出至 Kiali
Google Cloud Managed Service for Prometheus,不含 Cloud Service Mesh 資訊主頁 * *
Istio Telemetry API †
自訂轉接器/後端 (程序內或程序外)
任意遙測和記錄後端

† TRAFFIC_DIRECTOR 控制層支援 Istio 遙測 API 的子集,用於設定存取記錄和追蹤記錄。

Proxy 要求記錄

功能 代管 (TD) 代管 (istiod) 已淘汰
流量記錄
存取記錄 * *

追蹤

功能 代管 (TD) 代管 (istiod) 已淘汰
Cloud Trace * *
Jaeger 追蹤 (可使用客戶管理的 Jaeger) 相容
Zipkin 追蹤 (允許使用客戶自行管理的 Zipkin) 相容

網路

流量攔截和重新導向機制

功能 代管 (TD) 代管 (istiod) 已淘汰
使用 init 容器搭配 CAP_NET_ADMIN 執行 iptables †
Istio 容器網路介面 (CNI)
白箱補充資訊
設定攔截模式

† 強烈建議使用容器網路介面 (CNI),而非 init 容器。

通訊協定支援

功能 代管 (TD) 代管 (istiod) 已淘汰
IPv4
HTTP/1.1
HTTP/2
TCP 位元組串流 (附註 1)
gRPC
IPv6 †

注意:

  1. 雖然 TCP 是支援的網路通訊協定,且系統會收集 TCP 指標,但不會回報這些指標。 Google Cloud 控制台只會顯示 HTTP 服務的指標。
  2. 不支援為下列通訊協定設定第 7 層功能的服務:WebSocket、MongoDB、Redis、MySQL、Kafka、Cassandra、RabbitMQ、Cloud SQL。您或許可以使用 TCP 位元組串流支援,讓通訊協定正常運作。如果 TCP 位元組串流不支援該通訊協定 (例如 Kafka 在通訊協定專屬回覆中傳送重新導向位址,而該重新導向與 Cloud Service Mesh 的轉送邏輯不相容),則不支援該通訊協定。雖然可以使用 Mongo、MySQL 和 Redis 通訊協定建立閘道通訊埠,但網格會將產生的流量視為標準 TCP,不會進行通訊協定專屬處理。
  3. † 在無 Proxy gRPC 中,IPv6 雙堆疊功能僅支援 C++ 和 Python 的 gRPC 1.66.1 以上版本、gRPC Go v1.71 和 gRPC Node.js v1.12。如果您嘗試使用不支援雙堆疊的 gRPC 版本設定雙堆疊功能,用戶端只會使用 Traffic Director 傳送的第一個位址。

Envoy 部署作業

功能 代管 (TD) 代管 (istiod) 已淘汰
Sidecar
Ingress 閘道
直接從 Sidecar 輸出
使用輸出閘道輸出 * *

CRD 支援

功能 代管 (TD) 代管 (istiod) 已淘汰
Sidecar 資源
服務項目資源
百分比、錯誤植入、路徑比對、重新導向、重試、重寫、逾時、重試、鏡像、標頭操控和 CORS 路由規則
`WasmPlugin` API
Istio Operator

Istio ingress 閘道的負載平衡器

功能 代管 (TD) 代管 (istiod) 已淘汰
第三方外部負載平衡器
Google Cloud 內部負載平衡器 * *

服務網格雲端閘道

功能 代管 (TD) 代管 (istiod) 已淘汰
服務網格雲端閘道

Kubernetes Gateway API

功能 代管 (TD) 代管 (istiod) 已淘汰
Kubernetes Gateway API

負載平衡政策

功能 代管 (TD) 代管 (istiod) 已淘汰
循環制
連線數最少
隨機
直通
一致性雜湊
縣市
GCPTrafficDistributionPolicy
GCPBackendPolicy

負載平衡模式

功能 代管 (TD) 代管 (istiod) 已淘汰
費率
使用率
CUSTOM_METRICS
處理中

如要進一步瞭解平衡模式,請參閱「後端服務總覽」。

服務項目

功能 代管 (TD) 代管 (istiod) 已淘汰
ServiceEntry v1beta1 †

† TRAFFIC_DIRECTOR 控制層實作支援 ServiceEntry 欄位的子集。如需支援欄位、不支援欄位和設定限制的完整清單,請參閱「API 支援:ServiceEntry」。

目的地規則

功能 代管 (TD) 代管 (istiod) 已淘汰
DestinationRule v1beta1 †

† TRAFFIC_DIRECTOR 控制層實作要求定義子集的目的地規則,必須與 Kubernetes 服務或 ServiceEntry 位於相同的命名空間和叢集。如需支援欄位、不支援欄位和設定限制的完整清單,請參閱「API 支援:DestinationRule」。

Sidecar

功能 代管 (TD) 代管 (istiod) 已淘汰
Sidecar v1beta1 †

† TRAFFIC_DIRECTOR 控制層實作支援 Sidecar 欄位的子集。如需支援欄位、不支援欄位和設定限制的完整清單,請參閱「API 支援:Sidecar」。

DNS Proxy

功能 代管 (TD) 代管 (istiod) 已淘汰
跨叢集的 Service 名稱解析 †
叢集中 ServiceEntry 的名稱解析 †
Headless Service 的名稱解析
自動分配位址 †

† 必須使用 1.21.5-asm.39 以上版本的 Sidecar。

EnvoyFilter

功能 代管 (TD) 代管 (istiod) 已淘汰
EnvoyFilter v1alpha3 †

† 請參閱資料層擴充性頁面,瞭解支援的欄位和可設定的擴充功能

MeshConfig

功能 代管 (TD) 代管 (istiod) 已淘汰
DiscoverySelectors
clusterLocal
LocalityLB †
ExtensionProviders
CACert
ImageType - distroless †
OutboundTrafficPolicy
defaultProviders.accessLogging
defaultProviders.tracing
defaultConfig.tracing.stackdriver
accessLogFile †
accessLogFormat †
accessLogEncoding †

† 如要瞭解詳細的設定行為,請參閱「Distroless Proxy 映像檔」。
† 如要瞭解詳細的設定行為和限制,請參閱「設定位置負載平衡」。
† 如要瞭解詳細的設定行為和限制,請參閱「自訂 Envoy 存取記錄格式和編碼」。

ProxyConfig

功能 代管 (TD) 代管 (istiod) 已淘汰
HTTP/1.0 支援 (ISTIO_META_NETWORK)
映像檔選擇 (Distroless 或基礎映像檔)
Kubernetes 原生 sidecar (ENABLE_NATIVE_SIDECARS)

區域

GKE 叢集必須位於下列其中一個區域,或下列區域內的任何可用區。

區域 位置
africa-south1 約翰尼斯堡
asia-east1 台灣
asia-east2 香港
asia-northeast1 日本東京
asia-northeast2 日本大阪
asia-northeast3 南韓
asia-south1 印度孟買
asia-south2 印度德里
asia-southeast1 新加坡
asia-southeast2 雅加達
australia-southeast1 澳洲雪梨
australia-southeast2 澳洲墨爾本
europe-central2 波蘭
europe-north1 芬蘭
europe-north2 斯德哥爾摩
europe-southwest1 西班牙
europe-west1 比利時
europe-west2 英國
europe-west3 德國法蘭克福
europe-west4 荷蘭
europe-west6 瑞士
europe-west8 義大利米蘭
europe-west9 法國
europe-west10 德國柏林
europe-west12 義大利杜林
me-central1 杜哈
me-central2 沙烏地阿拉伯達曼
me-west1 特拉維夫
northamerica-northeast1 加拿大蒙特婁
northamerica-northeast2 加拿大多倫多
northamerica-south1 墨西哥
southamerica-east1 巴西
southamerica-west1 智利
us-central1 愛荷華州
us-east1 南卡羅來納州
us-east4 北維吉尼亞州
us-east5 俄亥俄州
us-south1 達拉斯
us-west1 奧勒岡州
us-west2 洛杉磯
us-west3 鹽湖城
us-west4 拉斯維加斯

使用者介面

功能 代管 (TD) 代管 (istiod) 已淘汰
Google Cloud 控制台中的 Cloud Service Mesh 資訊主頁
Cloud Monitoring
Cloud Logging

工具

功能 代管 (TD) 代管 (istiod) 已淘汰
gcloud beta container fleet mesh debug 項工具