使用 Istio API(代管式控制平面)的受支持功能
本页介绍了支持的功能和限制,
使用 Cloud Service Mesh 或 istiod
作为控制平面的 Cloud Service Mesh
两种实现之间的差异。请注意,您无法选择这些选项
选择。istiod
实现仅适用于现有用户。
新安装将使用 Cloud Service Mesh 实现。
有关集群内 Cloud Service Mesh 支持的功能的列表
控制平面,请参阅
使用 Istio API(集群内 istiod
控制平面)。
如果您不确定自己使用的是哪个 Cloud Service Mesh 控制平面,
可以按照
确定控制平面实现
限制
<ph type="x-smartling-placeholder">
存在以下限制:
- GKE 集群必须位于受支持的区域之一中。
- GKE 版本必须是受支持的版本。
- 仅支持在环境中列出的平台。
- 不支持更改发布渠道。
- 迁移来源
使用
asmcli
的托管式 Cloud Service Mesh
更改为
将 Cloud Service Mesh 与舰队 API 搭配使用
不受支持。同样,使用舰队 API 预配代管式 Cloud Service Mesh
从 --management manual
到 --management automatic
不受支持。
- 仅支持从集群内 Cloud Service Mesh 进行迁移和升级
1.9 及以上版本安装的 Mesh CA。使用 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
Kubernetes Gateway
API
您无需订阅 GKE Enterprise,即可使用代管式控制平面。
但 Google Cloud 控制台中的某些界面元素和功能仅支持
GKE Enterprise 订阅者。有关可用资源的信息
请参阅
GKE Enterprise 和 Cloud Service Mesh 界面差异。
在代管式控制平面的预配过程中,与所选渠道对应的 Istio CRD 将安装在指定集群中。如果集群中已有 Istio CRD,则它们将会被覆盖。
Managed Cloud Service Mesh 仅支持默认 DNS 网域 .cluster.local
。
自 2023 年 11 月 14 日起,如果 Google Cloud 上新安装代管式 Cloud Service Mesh,
快速发布渠道仅使用 Envoys 提取 JWKS。这相当于
PILOT_JWT_ENABLE_REMOTE_JWKS=envoy
Istio 选项。相较于
常规和稳定发布渠道,或在
快速发布渠道,那么您可能需要额外的
ServiceEntry
和 DestinationRule
配置。有关示例,请参见
requestauthn-with-se.yaml.tmpl
.
控制平面差异
istiod
与 Cloud Service Mesh 在支持的功能上存在差异
控制平面实现要了解您使用的是哪种实现,请参阅
确定控制平面实现。
- - 表示该功能可用且默认处于启用状态。
- † - 表示功能 API 可以
因平台而异
- * - 表示该功能支持
并且可按照
启用可选功能
或功能表中链接的功能指南。
- § - 表示该地图项
受许可名单支持代管式 Anthos Service Mesh 的先前用户
自动在组织级别列入许可名单。
与 Google Cloud 支持团队联系以申请访问权限
或查看您的许可名单状态。
- - 表示该功能不可用或不受支持。
Google Cloud 支持完全支持默认功能和可选功能。该表中未明确列出的功能会得到全力支持。
决定控制平面实现的因素
首次在舰队中预配托管式 Cloud Service Mesh 时,
确定要使用哪种控制平面实现。相同的实现是
用于在该舰队中预配代管式 Cloud Service Mesh 的所有集群。
加入代管式 Cloud Service Mesh 的新舰队会收到
TRAFFIC_DIRECTOR
控制平面实现,但有一些例外情况:
- 如果您是现有的代管式 Cloud Service Mesh 用户,则会收到
ISTIOD
控制平面实现(当您将新舰队加入同一 Google Cloud 时)
组织改用代管式 Cloud Service Mesh,至少将持续到 2024 年 6 月 30 日。
如果您是这些用户之一,则可以联系支持团队来调整相应设置。
当前使用情况与 TRAFFIC_DIRECTOR
不兼容的用户
未做更改的实施将继续收到ISTIOD
实施截止日期为 2024 年 9 月 8 日。(这些用户收到了一项服务
Announcement.)
- 在预配代管式服务时,您舰队中的任何集群是否使用 Certificate Authority Service
Cloud Service Mesh,您会收到
ISTIOD
控制平面实现。
- 如果舰队中的任何集群包含集群内 Cloud Service Mesh
预配代管式 Cloud Service Mesh 时,您需要
接收
ISTIOD
控制平面实现。
- 如果舰队中的任何集群使用了
GKE Sandbox
预配代管式 Cloud Service Mesh 时,您会收到
ISTIOD
控制平面实现
确定控制平面实现
运行以下命令以确定控制平面的实现:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
请注意,如果您将 Cloud Service Mesh 与 Google Cloud API 搭配使用(请参阅
关于 Cloud Service Mesh),则此命令
不会运行。
输出类似于以下内容:
...
membershipSpecs:
projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
mesh:
management: MANAGEMENT_AUTOMATIC
membershipStates:
projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
servicemesh:
controlPlaneManagement:
details:
- code: REVISION_READY
details: 'Ready: asm-managed'
state: ACTIVE
implementation: TRAFFIC_DIRECTOR
...
可能的值 implementation
包括:
TRAFFIC_DIRECTOR
:Google Cloud 的核心基础设施
Cloud Service Mesh 控制平面。
ISTIOD
:istiod
的代管式实例充当 Cloud Service Mesh
控制平面
UPDATING
:集群正在不同实现之间迁移。很快你
将使用 TRAFFIC_DIRECTOR
实现。
代管式控制平面支持的功能
安装、升级和回滚
特征 |
受管 (TD) |
代管式 (istiod) |
使用舰队功能 API 在 GKE 集群上安装 |
|
|
从使用 Mesh CA 的 ASM 1.9 版升级 |
|
|
从 1.9 之前的 Cloud Service Mesh 版本直接(跳过级别)升级(请参阅有关间接升级的说明) |
|
|
从 Istio OSS 直接升级(跳过层级)(请参阅间接升级的说明) |
|
|
从 Istio-on-GKE 插件直接升级(跳过层级)(请参阅间接升级的说明) |
|
|
启用可选功能 |
|
|
环境
特征 |
受管 (TD) |
代管式 (istiod) |
GKE 1.25-1.27 位于其中一个受支持的区域中 |
|
|
具有 Autopilot 的 GKE 1.25-1.27 集群
|
|
|
Google Cloud 以外的环境(本地 GKE Enterprise、其他公有云上的 GKE Enterprise、Amazon EKS、Microsoft AKS 或其他 Kubernetes 集群) |
|
|
扩容
特征 |
受管 (TD) |
代管式 (istiod) |
每个集群 1000 项服务和 5000 个工作负载 |
|
|
每个网格有 50 个 ServicePorts,每个 ServicePort 有 36 个 Pod |
|
|
特征 |
受管 (TD) |
代管式 (istiod) |
单网络 |
|
|
多网络 |
|
|
单项目 |
|
|
使用共享 VPC 的多项目 |
|
|
多集群部署
有关术语的注意事项
- 多主配置意味着必须复制配置
所有集群中
- 主远程配置意味着单个集群包含
并被视为可信来源。
- Cloud Service Mesh 基于常规网络使用简化的网络定义,
连接。如果工作负载实例无需使用网关就可以直接通信,则它们位于同一网络上。
基础映像
† 具有代管式 (TD) 控制平面的 Cloud Service Mesh 仅支持
distroless 映像类型。您无法进行更改。
请注意,distroless 映像包含最少的二进制文件,因此您无法执行常规的
命令(如 bash 或 curl),因为它们未出现在 distroless 映像中。
但是,您可以使用临时容器挂接到正在运行的工作负载 Pod,
以便能够检查它并运行自定义命令。有关示例,请参见
收集 Cloud Service Mesh 日志。
安全
VPC Service Controls
证书分发和轮替机制
特征 |
受管 (TD) |
代管式 (istiod) |
工作负载证书管理 |
|
|
入站流量和出站流量网关的外部证书管理。 |
|
|
证书授权机构 (CA) 支持
安全功能
除了支持 Istio 安全功能外,Cloud Service Mesh
提供了更多功能来帮助您保护应用。
授权政策
特征 |
受管 (TD) |
代管式 (istiod) |
授权 v1beta1 政策 |
† |
|
自定义授权政策 |
§ |
|
†Cloud Service Mesh 控制平面实现不支持
rules.from.source.RemoteIp
和 rules.from.source.NotRemoteIp
字段。
对等身份验证
特征 |
受管 (TD) |
代管式 (istiod) |
自动 mTLS |
|
|
mTLS PERMISSIVE 模式 |
|
|
mTLS STRICT 模式 |
* |
* |
mTLS 停用模式 |
|
|
请求身份验证
特征 |
受管 (TD) |
代管式 (istiod) |
JWT 身份验证(备注 1) |
|
|
基于 JWT 声明的路由 |
|
|
JWT 将声明复制到标头 |
|
|
注意:
- 第三方 JWT 默认处于启用状态。
- 在定义 RequestAuthentication API 时,在 JWKSURI 中添加完整的 fqdn/hostname。
- 指定 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 |
† |
|
自定义适配器/后端,出入进程 |
|
|
任意遥测和日志记录后端 |
|
|
† Cloud Service Mesh 控制平面支持部分 Istio Telemetry API
用于配置访问日志和
trace。
代理请求日志记录
跟踪
特征 |
受管 (TD) |
代管式 (istiod) |
Cloud Trace |
* |
* |
Jaeger 跟踪(允许使用客户管理的 Jaeger) |
|
兼容 |
Zipkin 跟踪(允许使用客户管理的 Zipkin) |
|
兼容 |
网络
流量拦截和重定向机制
特征 |
受管 (TD) |
代管式 (istiod) |
iptables 的传统用法:将 init 容器与 CAP_NET_ADMIN 结合使用 |
|
|
Istio 容器网络接口 (CNI) |
|
|
白盒 Sidecar |
|
|
协议支持
特征 |
受管 (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 的路由逻辑不兼容),则
不支持该协议
Envoy 部署
特征 |
受管 (TD) |
代管式 (istiod) |
Sidecar |
|
|
入站流量网关 |
|
|
直接从 Sidecar 出站 |
|
|
使用出站流量网关出站 |
* |
* |
CRD 支持
Istio 入站流量网关的负载均衡器
特征 |
受管 (TD) |
代管式 (istiod) |
第三方外部负载均衡器 |
|
|
Google Cloud 内部负载均衡器 |
* |
* |
服务网格云网关
特征 |
受管 (TD) |
代管式 (istiod) |
服务网格云网关 |
|
|
Kubernetes Gateway API
特征 |
受管 (TD) |
代管式 (istiod) |
Kubernetes Gateway API |
|
|
负载均衡政策
特征 |
受管 (TD) |
代管式 (istiod) |
轮循 |
|
|
最少连接 |
|
|
随机 |
|
|
直通 |
|
|
一致的哈希 |
|
|
市行政区 |
|
|
服务条目
特征 |
受管 (TD) |
代管式 (istiod) |
ServiceEntry v1beta1 |
† |
|
† Cloud Service Mesh 控制平面实现不支持以下
字段和值:
workloadSelector
字段
endpoints[].network
字段
endpoints[].locality
字段
endpoints[].weight
字段
endpoints[].serviceAccount
字段
resolution
字段中的 DNS_ROUND_ROBIN
值
location
字段中的 MESH_INTERNAL
值
endpoints[].address
字段中的 Unix 域套接字地址
subjectAltNames
字段
目标规则
特征 |
受管 (TD) |
代管式 (istiod) |
DestinationRule v1beta1 |
† |
|
† Cloud Service Mesh 控制平面实现不支持
trafficPolicy.loadBalancer.localityLbSetting
字段和 trafficPolicy.tunnel
字段。
此外,Cloud Service Mesh 控制平面实现要求
定义子集的目标规则位于同一命名空间和集群中,
Kubernetes 服务或 ServiceEntry
Sidecar
特征 |
受管 (TD) |
代管式 (istiod) |
Sidecar v1beta1 |
† |
|
† Cloud Service Mesh 控制平面实现不支持以下
字段和值:
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 集群必须位于以下区域之一中或以下区域内的任何可用区中。
区域 |
位置 |
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 工具 |
|
|