使用 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
APIWasmPlugin
APIIstioOperator
APIKubernetes 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
。仅支持不包含其他边车(Cloud Service Mesh 边车除外)的工作负载使用托管式数据平面。
控制平面差异
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 时,机群中的任何 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 的多项目 |
多集群部署
有关术语的注意事项
- 多主配置意味着必须在所有集群中复制配置。
- 主远程配置意味着单个集群包含配置,并视为可靠来源。
- Cloud Service Mesh 会根据通用连接使用简化的网络定义。如果工作负载实例无需使用网关就可以直接通信,则它们位于同一网络上。
基础映像
功能 | 受管理 (TD) | 受管理 (istiod) |
---|---|---|
Distroless 代理映像 | † |
† 采用托管式 (TD) 控制平面的 Cloud Service Mesh 仅支持 distroless 映像类型。您无法更改此 ID。
请注意,无发行版映像包含的二进制文件非常少,因此您无法执行 bash 或 curl 等常用命令,因为这些命令不存在于无发行版映像中。不过,您可以使用临时容器附加到正在运行的工作负载 Pod,以便检查该 Pod 并运行自定义命令。例如,请参阅收集 Cloud Service Mesh 日志。
安全
VPC Service Controls
功能 | 受管理 (TD) | 受管理 (istiod) |
---|---|---|
VPC Service Controls |
证书分发和轮替机制
证书授权机构 (CA) 支持
功能 | 受管理 (TD) | 受管理 (istiod) |
---|---|---|
Cloud Service Mesh 证书授权机构 | ||
Certificate Authority Service | ||
Istio CA | ||
与自定义 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。
Telemetry
指标
功能 | 受管理 (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
容器。
协议支持
注意:
- 虽然 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 支持
功能 | 受管理 (TD) | 受管理 (istiod) |
---|---|---|
Sidecar 资源 | ||
服务条目资源 | ||
百分比、故障注入、路径匹配、重定向、重试、重写、超时、重试、镜像、标头操纵和 CORS 路由规则 | ||
“EnvoyFilter”API | § | |
`WasmPlugin` API | ||
Istio Operator |
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 或基础映像) | † | |
Kubernetes 原生辅助程序 (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 工具 |