Cloud Service Mesh GKE 服务网格概览

预览版客户支持此配置,但不建议 Cloud Service Mesh 的新用户使用此配置。如需了解详情,请参阅 Cloud Service Mesh 概览

本文档适用于希望使用 Kubernetes Gateway API 部署 Cloud Service Mesh 服务网格的 Google Kubernetes Engine 用户。

您可以使用 Kubernetes Gateway API 为 GKE 配置 Cloud Service Mesh,以实现服务间通信、流量管理、全局负载均衡和安全政策实施。

Kubernetes API 和 Google Cloud API

您可以使用两个不同的 API 配置 Cloud Service Mesh 服务网格:

本文档及相关设置指南提供了使用 Kubernetes Gateway API 配置 Cloud Service Mesh 服务网格的说明。

我们建议您在 Google Kubernetes Engine 上使用 Kubernetes Gateway API,我们建议您不要同时使用这两个 API 在 GKE 上的同一服务网格中配置路由。

Service Route API 使用的资源与 Kubernetes Gateway API 中的资源同名,这让您在同时使用这两个 API 时能够更轻松地进行操作。您配置的 Kubernetes 资源在功能上等同于适用于 Cloud Service Mesh 的服务路由 API 表示的 Google Cloud 资源。

以下部分介绍了 Cloud Service Mesh 与 Kubernetes Gateway API 集成所使用的资源和架构。

Gateway API

Gateway API 是对 Kubernetes 中的服务网络进行建模的资源集合。Kubernetes Gateway API 是一个开源项目,专注于通过提供通用路由 API 来支持 Ingress 和负载均衡器用例。通用的路由 API 有许多实现。Cloud Service Mesh 自定义资源定义 (CRD) 将作为开源 Gateway API 的扩展程序添加。CRD 支持服务网格用例,并使用 Gateway API 中引入的通用路由 API。

Gateway API 是分层组织的,它具有一个您将向其附加路由的网关父资源及其关联的 GatewayClass。GKE 包含一个 TDMesh 资源,它是 Gateway 资源的对等资源。您可以将相同的 Route 类型附加到 TDMesh 资源。TDMesh 资源是您将向其附加服务网格的路由和政策的位置。

Gateway API、网关资源、网格资源和路由
Gateway API、网关资源、网格资源和路由(点击可放大)

舰队

舰队由一个或多个 GKE 集群组成,这些集群在逻辑上进行分组。借助舰队,您可以管理多个集群以一致的方式管理 capability 并应用政策。使用舰队时,您可以管理跨多个集群的 Cloud Service Mesh 服务网格。

架构

Cloud Service Mesh 通过对集群的数据平面进行编程来实现 Gateway API 资源中指定的网络行为,从而在 GKE 上支持 Gateway API。Cloud Service Mesh 本身是一个由 Google 管理的控制平面,不处理任何数据平面流量。作为工作负载的 Sidecar 运行的 Envoy 代理或无代理 gRPC 客户端会负责处理数据平面中的流量。Cloud Service Mesh 通过 xDSv3 API 配置 Envoy 代理和无代理 gRPC 客户端。

Cloud Service Mesh 提供了一个代管式、全球可用的控制平面解决方案,与运行集群内的控制器相比,该解决方案更可靠且可伸缩。由于它是一种全局解决方案,因此 Cloud Service Mesh 可以在跨多个 GKE 集群分布的工作负载之间对流量进行负载均衡。在下图中,Cloud Service Mesh 使用 Gateway API 资源管理流向单个舰队中的三个集群中的服务的流量。

使用 Gateway API 配置的 Cloud Service Mesh 多集群服务网格
使用 Gateway API 配置的 Cloud Service Mesh 多集群服务网格(点击可放大)

您需要将舰队中的一个集群指定为配置集群。配置集群是存储 Gateway API 资源的位置。Cloud Service Mesh 仅监控配置集群中的资源,并忽略舰队中其他集群中的资源。如需详细了解配置集群,请参阅 GKE 文档中的配置集群设计

使用 GKE 多集群服务时,配置集群中的 Gateway API 资源可以引用舰队内任何集群中的 Kubernetes 服务。如需详细了解多集群服务发现,请参阅多集群服务

资源

Cloud Service Mesh 在服务网格的数据平面中支持 Envoy 代理和无代理 gRPC。两个客户端均通过在其各自的引导配置中指定 TDMesh 资源的名称和相应的项目编号,从 Cloud Service Mesh 接收特定服务网格的配置。使用 Kubernetes Gateway API 的 Cloud Service Mesh 设置指南提供了使用 Envoy 和无代理 gRPC 的演示数据平面配置。

TDMesh 资源

TDMesh 资源是 Cloud Service Mesh 自定义资源。它是对开源 Gateway API 的扩展,可支持 Cloud Service Mesh 的服务网格用例。使用 TDMesh 资源时,您会在舰队中创建服务网格实例。附加到 TDMesh 资源的路由指定了服务网格中的服务到服务路由行为。

Route 项资源

您可以将一部分 Gateway API 路由资源附加到 TDMesh 资源,以指定服务网格内的服务级路由。Cloud Service Mesh 支持以下 Route 资源:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRouteCloud Service Mesh 自定义资源

例如,您可以创建 HTTPRoute 以指定将发送到主机 payments.svc.internal 的 HTTP 请求路由到 Kubernetes 服务 service-payments。将 HTTPRoute 资源附加到数据平面实例订阅的 TDMesh 资源时,系统会相应地路由网格中的工作负载发送的 HTTP 请求。

此版本通过新的路由类型 TDGRPCRoute 扩展了 Gateway API 中的通用 Route 资源。由于该新的路由类型会匹配原生 gRPC 原语(例如方法和服务定义),因此它能够在您路由 gRPC 请求时为您提供一流的体验。

在 GKE 中使用 Gateway API 资源配置 Cloud Service Mesh
使用 GKE 中的 Gateway API 资源配置 Cloud Service Mesh(点击可放大)

限制

  • Cloud Service Mesh 会为服务网格中的所有 Kubernetes 服务配置以下默认行为。您无法更改这些行为。
    • TCP 健康检查会在所有 Gateway API Route 资源引用的服务端口上进行配置。
    • 系统会为发送到服务的所有传入请求配置默认的 30 秒超时
    • 会话亲和性已停用。
  • Envoy 自动注入器仅支持每个舰队一个网格。
  • 无法使用 Gateway API 启用 Cloud Service Mesh 的安全功能。
  • 您只能使用 Gateway API 在 GKE 上配置 TDMeshRoute 资源。您不能使用 Google Cloud 控制台、gcloud CLI 或 REST API。
  • 所有集群都必须位于同一项目中。不支持跨位于多个项目的集群的服务网格。
  • 您无法使用 Google Cloud 控制台配置或查看 GKE 服务网格。
  • 不支持使用 Cloud Logging 和 Cloud Monitoring 实现控制平面可观测性。

后续步骤