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

本頁面說明使用 TRAFFIC_DIRECTORISTIOD 做為控制層時,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
  • 如要瞭解規模限制,請參閱這份指南
  • 多叢集僅支援多主叢集部署選項,不支援多叢集的主叢集-遠端部署選項。
  • 系統不支援 istioctl ps。請改用「疑難排解」一文所述的 gcloud beta container fleet mesh debug 指令。
  • 不支援的 API:

    • EnvoyFilter 個 API

    • WasmPlugin 個 API

    • IstioOperator 個 API

    • Kubernetes Ingress 個 API

    」。
  • 如需不支援的 API 欄位清單,請參閱「Managed Cloud Service Mesh 中不支援的 Istio 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 條件的安裝項目相比 (請參閱下文),您可能需要額外設定 ServiceEntryDestinationRule 設定。如需範例,請參閱 requestauthn-with-se.yaml.tmpl。您可以判斷控制層是否支援 VPC Service Controls (即顯示 VPCSC_GA_SUPPORTED 條件),藉此判斷目前的作業模式是否等同於 PILOT_JWT_ENABLE_REMOTE_JWKS=envoy

  • 受管理資料層僅支援沒有額外 Sidecar 的工作負載 (Cloud Service Mesh Sidecar 除外)。

控制層差異

ISTIODTRAFFIC_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 日前,只要在同一個機構中加入新的機群,即可取得ISTIOD控制層實作項目 Google Cloud。如果您是這類使用者,可以聯絡支援團隊微調這項行為。如果使用者目前的用法與未經變更的實作方式不相容,系統會繼續提供實作方式,直到 2024 年 9 月 8 日為止。TRAFFIC_DIRECTORISTIOD(這些使用者已收到服務公告)。
  • 如果您在佈建代管 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)
每個叢集 1000 個服務和 5000 個工作負載
每個網格 50 個無頭服務通訊埠,每個無頭服務通訊埠 36 個 Pod

平台環境

功能 代管 (TD) 受管理 (istiod)
單一網路
多網路
單一專案
具備共用虛擬私有雲的多專案

多叢集部署

功能 代管 (TD) 受管理 (istiod)
多重主要版本
Primary-remote
使用宣告式 API 探索多叢集端點
使用遠端密鑰探索多叢集端點
透過宣告式 API 和簡單拓撲探索多叢集端點

術語注意事項

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

基礎映像檔

功能 代管 (TD) 受管理 (istiod)
Distroless Proxy 映像檔

† 採用代管 (TD) 控制層的 Cloud Service Mesh 僅支援不含發行版本的映像檔類型。而且無法變更。

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

安全性

VPC Service Controls

功能 代管 (TD) 受管理 (istiod)
VPC Service Controls

憑證發布和輪替機制

功能 代管 (TD) 受管理 (istiod)
管理工作負載憑證
ingressegress 閘道上管理外部憑證。

支援憑證授權單位 (CA)

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

安全性功能

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

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

授權政策

功能 代管 (TD) 受管理 (istiod)
授權 v1beta1 政策
自訂授權政策 §

同類應用程式驗證

功能 代管 (TD) 受管理 (istiod)
Auto-mTLS
mTLS 寬容模式
mTLS 嚴格模式 * *
mTLS DISABLE 模式

要求驗證

功能 代管 (TD) 受管理 (istiod)
JWT 驗證(附註 1)
以 JWT 憑證為基礎的轉送功能
將 JWT 副本憑證複製到標頭

注意:

  1. 第三方 JWT 預設為啟用。
  2. 定義 RequestAuthentication API 時,請在 JWKSURI 中新增完整 FQDN/主機名稱。
  3. 指定 JWKS URI 時,代管控制層會強制 Envoy 擷取 JWKS。

遙測

指標

功能 代管 (TD) 受管理 (istiod)
Cloud Monitoring (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)
流量記錄檔
存取記錄 * *

追蹤

功能 代管 (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

注意:

  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 中,只有 C++Python 的 gRPC 1.66.1 以上版本、gRPC Go v1.71,以及 gRPC Node.js v1.12,支援 IPv6 雙堆疊功能。如果您嘗試使用不支援雙堆疊的 gRPC 版本設定雙堆疊功能,用戶端只會使用 Traffic Director 傳送的第一個位址。

Envoy 部署作業

功能 代管 (TD) 受管理 (istiod)
補充資訊
輸入閘道
直接從 Sidecar 輸出
使用輸出閘道輸出 * *

支援 CRD

功能 代管 (TD) 受管理 (istiod)
Sidecar 資源
服務項目資源
百分比、錯誤植入、路徑比對、重新導向、重試、重寫、逾時、重試、鏡像、標頭操控和 CORS 轉送規則
`EnvoyFilter` API §
`WasmPlugin` API
Istio 運算子

Istio 輸入閘道的負載平衡器

功能 代管 (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 欄位
  • 如果 resolution 欄位有 DNS 值,則為兩筆以上的 endpoints[] 項目

目的地規則

功能 代管 (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 欄位

DNS Proxy

功能 代管 (TD) 受管理 (istiod)
跨叢集的「Service」名稱解析
叢集中的 ServiceEntry 名稱解析
無頭Service的名稱解析
自動分配地址

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

MeshConfig

功能 代管 (TD) 受管理 (istiod)
DiscoverySelectors
clusterLocal
LocalityLB §
ExtensionProviders §
CACert
ImageType - distroless §
OutboundTrafficPolicy §
defaultProviders.accessLogging
defaultProviders.tracing
defaultConfig.tracing.stackdriver §
accessLogFile §

ProxyConfig

功能 代管 (TD) 受管理 (istiod)
支援 HTTP/1.0 (ISTIO_META_NETWORK)
選取映像檔 (distroless 或基本映像檔)
Kubernetes 原生補充 Proxy (ENABLE_NATIVE_SIDECARS)

† 注入作業會使用 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-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 工具