使用 Istio API 支持的功能(托管式控制平面)
本页面介绍了使用 TRAFFIC_DIRECTOR 或 ISTIOD 作为控制平面的 Cloud Service Mesh 支持的功能和限制,以及每种实现之间的差异。请注意,您无法选择这些选项。ISTIOD 实现仅适用于现有用户。新安装尽可能使用 TRAFFIC_DIRECTOR 实现。
如需查看集群内控制平面的 Cloud Service Mesh 支持的功能列表,请参阅使用 Istio API(集群内 istiod 控制平面)。
如果您不确定自己使用的是哪个 Cloud Service Mesh 控制平面,可以按照识别控制平面实现中的说明检查您的控制平面实现。
限制
存在以下限制:
- GKE 集群必须位于受支持的区域之一中。
- GKE 版本必须是受支持的版本。
- 仅支持在环境中列出的平台。
- 不得在同时具有 OSS Istio 集群内部署或 Cloud Service Mesh 集群内控制平面的集群中部署托管式 Cloud Service Mesh。
- 不支持更改发布渠道。
- 不支持从具有
asmcli的托管式 Cloud Service Mesh 迁移到具有 Fleet API 的 Cloud Service Mesh。同样,不支持将具有 Fleet API 的托管式 Cloud Service Mesh 从--management manual配置为--management automatic。 - 仅支持使用 Canary 集群迁移策略从集群内 Cloud Service Mesh 进行迁移。
- 只有使用 Mesh CA 或 Certificate Authority Service 且属于受支持版本的集群内 Cloud Service Mesh 版本才支持迁移和升级。使用 Istio CA(以前称为 Citadel)进行的安装必须先迁移到 Mesh CA。
- 本指南概述了扩缩限制
- 仅支持多集群的多主要部署选项:多集群的主要远程部署选项不受支持。
- 不支持
istioctl ps。您可以改用问题排查中所述的gcloud beta container fleet mesh debug命令。 不受支持的 API:
EnvoyFilterAPIWasmPluginAPIIstioOperatorAPIKubernetes IngressAPI
如需查看不受支持的 API 字段列表,请参阅托管式 Cloud Service Mesh 中不受支持的 Istio 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=envoyIstio 选项。与没有 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 用户,则在将同一 Google Cloud组织中的新舰队加入托管式 Cloud Service Mesh 中时,至少在 2024 年 6 月 30 日之前,您会收到
ISTIOD控制平面实现。 如果您是这类用户,可以与支持团队联系,以便微调此行为。 如果用户的现有使用情况与TRAFFIC_DIRECTOR实现不兼容,则在 2024 年 9 月 8 日之前,用户将继续收到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) |
|---|---|---|
| 当前在发布渠道中提供的 GKE 版本,位于其中一个受支持的区域 | ||
| 当前在发布渠道中提供的 GKE 版本,位于其中一个受支持的区域,GKE Autopilot 集群 | ||
| Google Cloud 以外的环境(本地 GKE Enterprise、其他公有云上的 GKE Enterprise、Amazon EKS、Microsoft AKS 或其他 Kubernetes 集群) |
扩缩
请参阅可扩缩性限制页面
平台环境
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| 单网络 | ||
| 多网络 | ||
| 单项目 | ||
| 使用共享 VPC 的多项目 |
多集群部署
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| 多主模式 | ||
| 主远程 | ||
| 使用声明式 API 进行多集群端点发现 | ||
| 使用远程 Secret 进行多集群端点发现 | ||
| 使用声明式 API 和简单拓扑进行多集群端点发现 |
有关术语的注意事项
- 多主配置意味着必须在所有集群中复制配置。
- 主远程配置意味着单个集群包含配置,并视为可靠来源。
- Cloud Service Mesh 会根据通用连接使用简化的网络定义。如果工作负载实例无需使用网关就可以直接通信,则它们位于同一网络上。
- 多集群端点发现的简单拓扑意味着,舰队中的每个集群要么参与端点发现,要么不参与端点发现。不受支持的复杂拓扑包括:(a) 单向端点发现(例如,集群 A 可以发现集群 B 中的端点,但反之则不行)和 (b) 分散的端点发现网络(例如,集群 A 和 B 可以发现彼此的端点,集群 C 和 D 可以发现彼此的端点,但 A/B 和 C/D 无法发现彼此的端点)。
基础映像
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| Distroless 代理映像 | † |
† 使用托管式 (TD) 控制平面的 Cloud Service Mesh 仅支持 distroless 映像类型。您无法更改它。
请注意,distroless 映像具有最小的二进制文件,因此您无法执行 bash 或 curl 等常规命令,因为它们不在 distroless 映像中。 不过,您可以使用临时容器附加到正在运行的工作负载 Pod,以便检查 Pod 并运行自定义命令。例如,请参阅收集 Cloud Service Mesh 日志。
安全
VPC Service Controls
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| VPC Service Controls |
证书分发和轮替机制
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| 工作负载证书管理 | ||
| 入站流量和出站流量网关的外部证书管理。 |
证书授权机构 (CA) 支持
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| Cloud Service Mesh 证书授权机构 | ||
| Certificate Authority Service | ||
| Istio CA | ||
| 与自定义 CA 集成 |
安全功能
除了支持 Istio 安全功能之外,Cloud Service Mesh 还提供了更多功能来帮助您保护应用。
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| IAP 集成 | ||
| 最终用户身份验证 | ||
| 试运行模式 | ||
| 拒绝日志记录 | ||
| 审核政策(不支持) |
授权政策
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| 授权 v1beta1 政策 | ||
| CUSTOM 授权政策 | § |
对等身份验证
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| 自动 mTLS | ||
| mTLS PERMISSIVE 模式 | ||
| mTLS STRICT 模式 | * | * |
| mTLS DISABLE 模式 |
请求身份验证
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| JWT 身份验证(备注 1) | ||
| 基于 JWT 声明的路由 | ||
| JWT 将声明复制到标头 |
注意:
- 第三方 JWT 默认处于启用状态。
- 在定义 RequestAuthentication API 时,在 JWKSURI 中添加完整的 fqdn/主机名。
- 托管式控制平面会在指定 JWKS URI 时强制 Envoy 提取 JWKS。
- 使用
TRAFFIC_DIRECTOR控制平面实现时,内嵌 JWKS 中不允许使用 AES CBC 算法 A128CBC-HS256、A192CBC-HS384 和 A256CBC-HS512。
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) |
|---|---|---|
| 流量日志 | ||
| 访问日志 | * | * |
跟踪
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| Cloud Trace | * | * |
| Jaeger 跟踪(允许使用客户管理的 Jaeger) | 兼容 | |
| Zipkin 跟踪(允许使用客户管理的 Zipkin) | 兼容 |
网络
流量拦截和重定向机制
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
通过具有 CAP_NET_ADMIN 的 init 容器来使用 iptables |
† | |
| Istio 容器网络接口 (CNI) | ||
| 白盒 Sidecar |
† 我们强烈建议您使用容器网络接口 (CNI),而不是 init 容器。
协议支持
| 功能 | 托管式 (TD) | 托管式 (istiod) |
|---|---|---|
| IPv4 | ||
| HTTP/1.1 | ||
| HTTP/2 |