使用 Istio API (代管控制層) 支援的功能
本頁面說明使用 TRAFFIC_DIRECTOR 或 ISTIOD 做為控制層時,Cloud Service Mesh 支援的功能和限制,以及各項實作方式之間的差異。請注意,這些並非可供選擇的選項,ISTIOD 實作方式僅適用於現有使用者。
新安裝項目會盡可能使用 TRAFFIC_DIRECTOR 實作方式。
如要查看代管 Cloud Service Mesh 支援的 Istio 和 Google Cloud API 清單,請參閱「代管 Cloud Service Mesh 的 API 支援」。TRAFFIC_DIRECTOR
如要查看叢內控制層支援的 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。同樣地,系統不支援從--management manual到--management automatic使用 Fleet API 佈建受管理 Cloud Service Mesh。 - 如要從叢內 Cloud Service Mesh 遷移,只能使用Canary 叢集遷移策略。
- 只有在叢集內,且使用 Mesh CA 或憑證授權單位服務的 Cloud Service Mesh 版本,才支援遷移和升級。如需支援版本,請參閱這份表格。使用 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 的使用者介面差異」。
在代管控制層的佈建程序中,系統會在指定叢集中安裝所選管道對應的 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 使用者,在 2024 年 6 月 30 日前,只要在同一個機構中加入新的機群,即可取得
ISTIOD控制層實作項目 Google Cloud。如果您是這類使用者,可以聯絡支援團隊微調這項行為。 如果使用者目前的用法與未經變更的TRAFFIC_DIRECTOR實作方式不相容,則會繼續收到ISTIOD實作方式,直到 2024 年 9 月 8 日為止。(這些使用者收到服務公告。) - 在您佈建代管 Cloud Service Mesh 時,如果機群中的任何 GKE on Google Cloud 叢集含有叢集內 Cloud Service Mesh 控制層,您將收到
ISTIOD控制層實作項目。 - 如果機群中的任何叢集使用 GKE Sandbox,當您佈建代管 Cloud Service Mesh 時,會收到
ISTIOD控制層實作項目。
Managed control plane 支援的功能
安裝、升級及復原
| 功能 | 代管 (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) 已淘汰 |
|---|---|---|
| 多重主要版本 | ||
| Primary-remote | ||
| 透過宣告式 API 探索多叢集端點 | ||
| 使用遠端密鑰探索多叢集端點 | ||
| 透過宣告式 API 和簡單的拓撲探索多叢集端點 |
術語注意事項
- 多主設定表示設定必須在所有叢集中複製。
- 主要/遠端設定是指單一叢集包含設定,且視為可靠資料來源。
- Cloud Service Mesh 會根據一般連線能力,簡化網路定義。如果工作負載執行個體能夠直接通訊 (不需透過閘道),就表示這些執行個體位於相同網路上。
- 多叢集端點探索的簡單拓撲是指機群中的每個叢集都會參與端點探索,或都不會參與。不支援的複雜拓撲包括:(a) 單向端點探索 (例如叢集 A 可以探索叢集 B 中的端點,但反之則否),以及 (b) 不連貫的端點探索網路 (例如叢集 A 和 B 可以探索彼此的端點,叢集 C 和 D 可以探索彼此的端點,但 A/B 和 C/D 無法探索彼此的端點)。
基本映像檔
| 功能 | 代管 (TD) | 代管 (istiod) 已淘汰 |
|---|---|---|
| 無 Distro 的 Proxy 映像檔 | † |
† Istio 會發布 default、debug 和 distroless 代理程式映像檔。如果是採用代管 (TRAFFIC_DIRECTOR) 控制層的 Cloud Service Mesh:直接加入的叢集預設會使用 distroless,且無法變更。遷移的叢集預設會使用 default 映像檔,並可選擇使用 distroless (透過 MeshConfig 或 Pod 註解)。系統不支援其他圖片類型 (debug) 的覆寫。
請注意,Distroless 映像檔的二進位檔數量極少,因此您無法執行 bash 或 curl 等一般指令,因為這些指令並不存在於 Distroless 映像檔中。不過,您可以使用暫時性容器附加至正在執行的工作負載 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) 已淘汰 |
|---|---|---|
| Auto-mTLS | ||
| mTLS PERMISSIVE 模式 | ||
| mTLS STRICT 模式 | * | * |
| mTLS DISABLE 模式 |
注意:雖然 PeerAuthentication API 不支援 TRAFFIC_DIRECTOR 控制平面實作的 DISABLE 模式,但您可以透過 DestinationRule API 停用特定工作負載的 mTLS,做為解決方法。詳情請參閱「停用 Managed CSM 的 mTLS」。
要求驗證
| 功能 | 代管 (TD) | 代管 (istiod) 已淘汰 |
|---|---|---|
| JWT 驗證(附註 1) | ||
| 以 JWT 宣告為準的轉送 | ||
| 將 JWT 副本憑證附加資訊複製到標頭 |
注意:
- 第三方 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 代理程式內指標) | ||
| Cloud Monitoring (TCP 代理內指標) | ||
| 將 Prometheus 指標匯出至 Grafana (僅限 Envoy 指標) | * | * |
| 將 Prometheus 指標匯出至 Kiali | ||
| Google Cloud Managed Service for Prometheus,不包括 Cloud Service Mesh 資訊主頁 | * | * |
| Istio Telemetry API | † | |
| 自訂配接器/後端 (無論是否在程序中) | ||
| 任意遙測和記錄後端 |
† 控制層支援部分 Istio 遙測 API,可用於設定存取記錄和追蹤。TRAFFIC_DIRECTOR
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 中,只有 C++ 和 Python 的 gRPC 1.66.1 以上版本、gRPC Go v1.71,以及 gRPC Node.js v1.12,支援 IPv6 雙堆疊功能。如果您嘗試使用不支援雙堆疊的 gRPC 版本設定雙堆疊功能,用戶端只會使用 Traffic Director 傳送的第一個位址。
Envoy 部署作業
| 功能 | 代管 (TD) | 代管 (istiod) 已淘汰 |
|---|---|---|
| 補充資訊 | ||
| 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) 已淘汰 |
|---|---|---|
| round robin | ||
| 最少連線 | ||
| 隨機 | ||
| 直通 | ||
| 一致的雜湊 | ||
| 縣市 | ||
| GCPTrafficDistributionPolicy | ||
| GCPBackendPolicy |
負載平衡模式
| 功能 | 代管 (TD) | 代管 (istiod) 已淘汰 |
|---|---|---|
| 費率 | ||
| 使用率 | ||
| CUSTOM_METRICS | ||
| IN-FLIGHT |
如要進一步瞭解平衡模式,請參閱「後端服務總覽」。
服務項目
| 功能 | 代管 (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 名稱解析 |
† | |
無頭 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 | † |
† 如要瞭解詳細的設定行為,請參閱「無 Distro 的 Proxy 映像檔」。
† 如需詳細的設定行為和限制,請參閱「設定區域負載平衡」。
† 如要進一步瞭解設定行為和限制,請參閱「自訂 Envoy 存取記錄格式和編碼」。
ProxyConfig
| 功能 | 代管 (TD) | 代管 (istiod) 已淘汰 |
|---|---|---|
| 支援 HTTP/1.0 (ISTIO_META_NETWORK) | ||
| 選取映像檔 (無發行版本或基本映像檔) | ||
| 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 工具 |