使用 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個 APIIstioOperator個 APIKubernetes 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=envoyIstio 選項。與沒有 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 |
注意:
- 第三方 JWT 預設為啟用。
- 定義 RequestAuthentication API 時,請在 JWKSURI 中新增完整的 FQDN/主機名稱。
- 指定 JWKS URI 時,代管控制層會強制 Envoy 擷取 JWKS。
- 使用
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 | † |
注意:
- 雖然 TCP 是支援的網路通訊協定,且系統會收集 TCP 指標,但不會回報這些指標。 Google Cloud 控制台只會顯示 HTTP 服務的指標。
- 不支援為下列通訊協定設定第 7 層功能的服務:WebSocket、MongoDB、Redis、MySQL、Kafka、Cassandra、RabbitMQ、Cloud SQL。您或許可以使用 TCP 位元組串流支援,讓通訊協定正常運作。如果 TCP 位元組串流不支援該通訊協定 (例如 Kafka 在通訊協定專屬回覆中傳送重新導向位址,而該重新導向與 Cloud Service Mesh 的轉送邏輯不相容),則不支援該通訊協定。雖然可以使用 Mongo、MySQL 和 Redis 通訊協定建立閘道通訊埠,但網格會將產生的流量視為標準 TCP,不會進行通訊協定專屬處理。
- † 在無 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 項工具 |