使用 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。同样,不支持将具有 Fleet API 的代管式 Cloud Service Mesh 从 --management manual
预配为 --management automatic
。
- 只有使用 Mesh CA 安装的集群内 Cloud Service Mesh 1.9+ 版才支持迁移和升级。使用 Istio CA(以前称为 Citadel)进行的安装必须先迁移到 Mesh CA。
- 缩放仅限于每个集群 1000 项服务和 5000 个工作负载。
- 仅支持多集群的多主要部署选项:多集群的主要远程部署选项不受支持。
- 不支持
istioctl ps
。您可以改为使用 gcloud beta container fleet mesh debug
命令,如问题排查中所述。
不受支持的 API:
EnvoyFilter
API
WasmPlugin
API
IstioOperator
API
Kubernetes Ingress
API
您可以在不订阅 GKE Enterprise 的情况下使用代管式控制平面,但 Google Cloud 控制台中的某些界面元素和功能仅限 GKE Enterprise 订阅者使用。如需了解订阅者和非订阅者可以使用的内容,请参阅 GKE Enterprise 和 Cloud Service Mesh 界面差异。
在代管式控制平面的预配过程中,与所选渠道对应的 Istio CRD 将安装在指定集群中。如果集群中已有 Istio 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
。
控制平面差异
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 用户,则在将同一组织中的新舰队纳入托管式 Cloud Service Mesh 时,您会收到
ISTIOD
控制平面实现,至少到 2024 年 6 月 30 日。 Google Cloud如果您是这类用户,可以与支持团队联系,以优化此行为。
如果用户的现有使用情况与未经更改的 TRAFFIC_DIRECTOR
实现不兼容,则在 2024 年 9 月 8 日之前,他们将继续收到 ISTIOD
实现。(这些用户收到了服务通告。)
- 如果您在预配代管式 Cloud Service Mesh 时,您的舰队中的任何集群都使用 Certificate Authority Service,您将收到
ISTIOD
控制平面实现。
- 如果您在预配托管式 Cloud Service Mesh 时,机群中的任何 GKE on Google Cloud 集群都包含集群内 Cloud Service Mesh 控制平面,您将收到
ISTIOD
控制平面实现。
- 如果您的舰队中的任何集群使用 GKE 沙盒,那么在您预配托管式 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) |
单网络 |
|
|
多网络 |
|
|
单项目 |
|
|
使用共享 VPC 的多项目 |
|
|
多集群部署
功能 |
受管理 (TD) |
受管理 (istiod) |
多主模式 |
|
|
主远程 |
|
|
使用声明式 API 实现多集群端点发现 |
|
|
使用远程密钥进行多集群端点发现 |
|
|
有关术语的注意事项
- 多主配置意味着必须在所有集群中复制配置。
- 主远程配置意味着单个集群包含配置,并视为可靠来源。
- Cloud Service Mesh 会根据通用连接使用简化的网络定义。如果工作负载实例无需使用网关就可以直接通信,则它们位于同一网络上。
基础映像
† 采用托管式 (TD) 控制平面的 Cloud Service Mesh 仅支持 distroless 映像类型。您无法更改此 ID。
请注意,无发行版映像包含的二进制文件非常少,因此您无法执行 bash 或 curl 等常用命令,因为这些命令不存在于无发行版映像中。不过,您可以使用临时容器附加到正在运行的工作负载 Pod,以便检查该 Pod 并运行自定义命令。例如,请参阅收集 Cloud Service Mesh 日志。
安全
VPC Service Controls
证书分发和轮替机制
功能 |
受管理 (TD) |
受管理 (istiod) |
工作负载证书管理 |
|
|
入站流量和出站流量网关的外部证书管理。 |
|
|
证书授权机构 (CA) 支持
安全功能
除了支持 Istio 安全功能之外,Cloud Service Mesh 还提供了更多功能来帮助您保护应用。
授权政策
功能 |
受管理 (TD) |
受管理 (istiod) |
授权 v1beta1 政策 |
† |
|
自定义授权政策 |
§ |
|
† TRAFFIC_DIRECTOR
控制平面实现不支持 rules.from.source.RemoteIp
和 rules.from.source.NotRemoteIp
字段。
对等身份验证
功能 |
受管理 (TD) |
受管理 (istiod) |
自动 mTLS |
|
|
mTLS PERMISSIVE 模式 |
|
|
mTLS STRICT 模式 |
* |
* |
mTLS DISABLE 模式 |
|
|
请求身份验证
功能 |
受管理 (TD) |
受管理 (istiod) |
JWT 身份验证(备注 1) |
|
|
基于 JWT 声明的路由 |
|
|
JWT 将声明复制到标头 |
|
|
注意:
- 第三方 JWT 默认处于启用状态。
- 在定义 RequestAuthentication API 时,在 JWKSURI 中添加完整的 FQDN/主机名。
- 代管式控制平面会在指定 JWKS URI 时强制 Envoy 提取 JWKS。
遥测
指标
功能 |
受管理 (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 |
† |
|
自定义适配器/后端,出入进程 |
|
|
任意遥测和日志记录后端 |
|
|
† TRAFFIC_DIRECTOR
控制平面支持用于配置访问日志和轨迹的部分 Istio 遥测 API。TRAFFIC_DIRECTOR
控制平面不支持配置轨迹采样率。
代理请求日志记录
跟踪
功能 |
受管理 (TD) |
受管理 (istiod) |
Cloud Trace |
* |
* |
Jaeger 跟踪(允许使用客户管理的 Jaeger) |
|
兼容 |
Zipkin 跟踪(允许使用客户管理的 Zipkin) |
|
兼容 |
网络
流量拦截和重定向机制
功能 |
受管理 (TD) |
受管理 (istiod) |
iptables 的用法:将 init 容器与 CAP_NET_ADMIN 结合使用 |
|
† |
Istio 容器网络接口 (CNI) |
|
|
白盒 Sidecar |
|
|
† 我们强烈建议使用容器网络接口 (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 作为双栈网络的预览版功能提供。在无代理 gRPC 中,只有 C++ 和 Python 中的 gRPC 1.66.1 或更高版本或 gRPC Node.js v1.12 支持双栈功能。如果您尝试使用不支持双栈的 gRPC 版本配置双栈功能,客户端将仅使用 Traffic Director 发送的第一个地址。
Envoy 部署
功能 |
受管理 (TD) |
受管理 (istiod) |
Sidecar |
|
|
入站流量网关 |
|
|
直接从 Sidecar 出站 |
|
|
使用出站流量网关出站 |
* |
* |
CRD 支持
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
字段
resolution
字段中的 DNS_ROUND_ROBIN
值
location
字段中的 MESH_INTERNAL
值
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 代理 (ISTIO_META_DNS_CAPTURE、ISTIO_META_DNS_AUTO_ALLOCATE) |
|
|
HTTP/1.0 支持 (ISTIO_META_NETWORK) |
|
|
映像选择(distroless 或基础映像) |
† |
|
† 使用 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 工具 |
|
|