使用 Istio API (代管控制層) 支援的功能
  
本頁面說明使用 TRAFFIC_DIRECTOR 或 ISTIOD 做為控制層時,Cloud Service Mesh 支援的功能和限制,以及各項實作方式的差異。請注意,這些並非可供選擇的選項。ISTIOD 實作方式僅適用於現有使用者。
新安裝項目會盡可能使用 TRAFFIC_DIRECTOR 導入方式。
如要查看叢內控制層支援的 Cloud Service Mesh 功能清單,請參閱「使用 Istio API (叢內 istiod 控制層)」。如果不確定使用的 Cloud Service Mesh 控制層,請按照「識別控制層實作方式」一文中的操作說明,檢查控制層實作方式。
限制
限制如下:
- GKE 叢集必須位於支援的區域。
- GKE 版本必須是支援的版本。
- 系統僅支援「環境」中列出的平台。
- 系統不支援變更發布版本。
- 不支援從使用 asmcli的受管理 Cloud Service Mesh 遷移至使用 Fleet API 的 Cloud Service Mesh。同樣地,系統也不支援從--management manual到--management automatic,使用 Fleet API 佈建受管理 Cloud Service Mesh。
- 只有透過網格憑證授權單位安裝的叢內 Cloud Service Mesh 1.9 以上版本,才支援遷移和升級。如果安裝作業使用 Istio CA (舊稱 Citadel),請先遷移至網格 CA。
- 每個叢集最多只能有 1,000 項服務和 5,000 個工作負載。
- 多叢集僅支援多主叢集部署選項,不支援多叢集的主叢集-遠端部署選項。
- 系統不支援 istioctl ps。請改用「疑難排解」一節所述的gcloud beta container fleet mesh debug指令。
- 不支援的 API: - 
- EnvoyFilter個 API
 
- WasmPlugin個 API
 
- IstioOperator個 API
 
- Kubernetes Ingress個 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。
 
控制層差異
ISTIOD 和 TRAFFIC_DIRECTOR 控制層實作項目支援的功能有所不同。如要查看您使用的實作方式,請參閱「識別控制層實作方式」。
- :表示這項功能可用,且預設為啟用。
- † - 表示功能 API 在不同平台之間可能存在差異。
- * - 表示平台支援該功能,且可啟用該功能,如「啟用選用功能」或功能表格中連結的功能指南所述。
- §:表示許可清單支援這項功能。先前使用代管 Anthos Service Mesh 的使用者,會自動在機構層級加入允許清單。如要要求存取權或查看許可清單狀態,請與支援團隊聯絡 Google Cloud 。
- :表示功能無法使用或不支援。
 Google Cloud支援服務完全支援預設和選用功能。如果表格中未明確列出某項功能,我們會盡力提供支援。
決定控制層實作方式的因素
首次在車隊中佈建代管 Cloud Service Mesh 時,我們會決定要使用的控制層實作方式。在該機群中佈建受管理 Cloud Service Mesh 的所有叢集,都會使用相同的實作方式。
加入代管 Cloud Service Mesh 的新車隊會收到 TRAFFIC_DIRECTOR 控制層實作項目,但有以下例外情況:
- 如果您是現有的代管 Cloud Service Mesh 使用者,在 2024 年 6 月 30 日前,只要在同一個機構中,將新機群加入代管 Cloud Service Mesh,即可獲得 ISTIOD控制層實作 Google Cloud。如果您是這類使用者,可以聯絡支援團隊微調這項行為。如果使用者目前的用法與未經變更的實作方式不相容,系統會繼續提供實作方式,直到 2024 年 9 月 8 日為止。TRAFFIC_DIRECTORISTIOD(這些使用者已收到服務公告)。
- 如果您在佈建代管 Cloud Service Mesh 時,機群中的任何叢集使用憑證授權單位服務,您會收到 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) | 
  | 每個叢集 1000 個服務和 5000 個工作負載 |  |  | 
  | 每個網格 50 個無頭服務通訊埠,每個無頭服務通訊埠 36 個 Pod |  |  | 
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
| 單一網路 |  |  | 
| 多網路 |  |  | 
  
| 單一專案 |  |  | 
  
| 具備共用虛擬私有雲的多專案 |  |  | 
多叢集部署
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
| 多重主要版本 |  |  | 
| Primary-remote |  |  | 
| 使用宣告式 API 探索多叢集端點 |  |  | 
| 使用遠端密鑰探索多叢集端點 |  |  | 
術語注意事項
- 多主設定表示設定必須在所有叢集中複製。
- 主要/遠端設定是指單一叢集包含設定,並視為可靠資料來源。
- Cloud Service Mesh 會根據一般連線功能,簡化網路定義。如果工作負載執行個體能夠直接通訊,不需透過閘道,就表示這些執行個體位於同一個網路上。
基礎映像檔
† 採用代管 (TD) 控制層的 Cloud Service Mesh 僅支援不含發行版本的映像檔類型。而且無法變更。
請注意,Distroless 映像檔的二進位檔極少,因此您無法執行 bash 或 curl 等一般指令,因為這些指令不存在於 Distroless 映像檔中。不過,您可以使用暫時性容器附加至執行中的工作負載 Pod,以便檢查及執行自訂指令。例如,請參閱「收集 Cloud Service Mesh 記錄」。
安全性
VPC Service Controls
憑證發布和輪替機制
支援憑證授權單位 (CA)
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | Cloud Service Mesh 憑證授權單位 |  |  | 
  | 憑證授權單位服務 |  |  | 
  | Istio CA |  |  | 
  | 與自訂 CA 整合 |  |  | 
安全性功能
除了支援 Istio 安全防護功能,Cloud Service Mesh 還提供更多功能,協助您保護應用程式。
授權政策
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 授權 v1beta1 政策 | † |  | 
  | 自訂授權政策 | § |  | 
† TRAFFIC_DIRECTOR 控制層實作不支援 rules.from.source.RemoteIp 和 rules.from.source.NotRemoteIp 欄位。
同類應用程式驗證
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  
  | 自動 mTLS |  |  | 
  | mTLS 寬容模式 |  |  | 
  | mTLS 嚴格模式 | * | * | 
  | mTLS DISABLE 模式 |  |  | 
要求驗證
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | JWT 驗證(附註 1) |  |  | 
  | 以 JWT 憑證為基礎的轉送功能 |  |  | 
  | 將 JWT 副本憑證複製到標頭 |  |  | 
注意:
- 第三方 JWT 預設為啟用。
- 定義 RequestAuthentication API 時,請在 JWKSURI 中新增完整 FQDN/主機名稱。
- 指定 JWKS URI 時,代管控制層會強制 Envoy 擷取 JWKS。
遙測
指標
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | Cloud Monitoring (Proxy 內 HTTP 指標) |  |  | 
  | Cloud Monitoring (Proxy 內 TCP 指標) |  |  | 
  | 將 Prometheus 指標匯出至 Grafana (僅限 Envoy 指標) | * | * | 
  | 將 Prometheus 指標匯出至 Kiali |  |  | 
  | Google Cloud Managed Service for Prometheus,但不包括 Cloud Service Mesh 資訊主頁 | * | * | 
  | Istio Telemetry API | † |  | 
  | 自訂配接器/後端 (無論是否在程序中) |  |  | 
  | 任意遙測和記錄後端 |  |  | 
† TRAFFIC_DIRECTOR 控制層支援用來設定存取記錄和追蹤的 Istio 遙測 API 子集。控制層不支援設定追蹤取樣率。TRAFFIC_DIRECTOR
Proxy 要求記錄
追蹤
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | Cloud Trace | * | * | 
  | Jaeger 追蹤 (可使用客戶管理的 Jaeger) |  | 相容 | 
  | Zipkin 追蹤 (可使用客戶管理的 Zipkin) |  | 相容 | 
網路
流量攔截和重新導向機制
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 使用 iptables搭配init容器
    與CAP_NET_ADMIN |  | † | 
  | 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、Kafka、Cassandra、RabbitMQ、Cloud SQL。您或許可以使用 TCP 位元組串流支援,讓通訊協定正常運作。如果 TCP 位元組串流無法支援通訊協定 (例如 Kafka 在通訊協定專屬回覆中傳送重新導向位址,但這個重新導向與 Cloud Service Mesh 的路由邏輯不相容),則不支援該通訊協定。
- 
† IPv6 是預先發布的雙重堆疊網路功能。在無 Proxy 的 gRPC 中,只有 C++ 和 Python 的 gRPC 1.66.1 以上版本,或 gRPC Node.js v1.12,才支援雙堆疊功能。如果您嘗試使用不支援雙堆疊的 gRPC 版本設定雙堆疊功能,用戶端只會使用 Traffic Director 傳送的第一個位址。
Envoy 部署作業
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 補充資訊 |  |  | 
  | 輸入閘道 |  |  | 
  | 直接從 Sidecar 輸出 |  |  | 
  | 使用輸出閘道輸出 | * | * | 
CRD 支援
Istio Ingress 閘道的負載平衡器
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 第三方外部負載平衡器 |  |  | 
  | Google Cloud 內部負載平衡器 | * | * | 
服務網格雲端閘道
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 服務網格雲端閘道 |  |  | 
Kubernetes Gateway API
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | Kubernetes Gateway API |  |  | 
負載平衡政策
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | 循環制 |  |  | 
  | 連線數最少 |  |  | 
  | 隨機 |  |  | 
  | 透視 |  |  | 
  | 一致的雜湊 |  |  | 
  | 縣市 |  |  | 
  | GCPTrafficDistributionPolicy |  |  | 
  | GCPBackendPolicy |  |  | 
服務項目
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | ServiceEntry v1beta1 | † |  | 
† TRAFFIC_DIRECTOR 控制平面實作不支援下列欄位和欄位中的值:
- workloadSelector欄位
- endpoints[].network欄位
- endpoints[].locality欄位
- endpoints[].weight欄位
- endpoints[].serviceAccount欄位
- DNS_ROUND_ROBIN欄位中的- resolution值
- MESH_INTERNAL欄位中的- location值
- endpoints[].address欄位中的 Unix 網域通訊端位址
- subjectAltNames欄位
目的地規則
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | DestinationRule v1beta1 | † |  | 
† TRAFFIC_DIRECTOR 控制層實作不支援下列欄位。
- trafficPolicy.loadBalancer.localityLbSetting欄位
- trafficPolicy.tunnel欄位
- trafficPolicy.tls.credentialName欄位
- trafficPolicy.portLevelSettings[].tls.credentialName欄位
此外,TRAFFIC_DIRECTOR 控制層實作需要定義子集的目的地規則,與 Kubernetes 服務或 ServiceEntry 位於相同命名空間和叢集。
Sidecar
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | Sidecar v1beta1 | † |  | 
† TRAFFIC_DIRECTOR 控制平面實作不支援下列欄位和欄位中的值:
- ingress欄位
- egress.port欄位
- egress.bind欄位
- egress.captureMode欄位
- inboundConnectionPool欄位
MeshConfig
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | LocalityLB | § |  | 
  | ExtensionProviders | § |  | 
  | CACert |  |  | 
  | ImageType - distroless | § |  | 
  | OutboundTrafficPolicy | § |  | 
  | defaultProviders.accessLogging |  |  | 
  | defaultProviders.tracing |  |  | 
  | defaultConfig.tracing.stackdriver | § |  | 
  | accessLogFile | § |  | 
ProxyConfig
  | 功能 | 代管 (TD) | 受管理 (istiod) | 
  | DNS  Proxy (ISTIO_META_DNS_CAPTURE、ISTIO_META_DNS_AUTO_ALLOCATE) |  |  | 
  | 支援 HTTP/1.0 (ISTIO_META_NETWORK) |  |  | 
  | 選取映像檔 (distroless 或基本映像檔) | † |  | 
† 無發行版本映像檔用於注入。
區域
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 | 加拿大多倫多 | 
  | 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 工具 |  |  |