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,此外我们还建议您在 GKE 上的同一服务网格中同时使用这两种 API 来配置路由。

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

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

Gateway API

Gateway API 是对 Kubernetes 中的服务网络进行建模的资源集合。Kubernetes Gateway API 是一个开源项目,专注于通过提供通用的路由 API 来支持入站流量和负载均衡器用例。通用的路由 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 集群组成,这些集群在逻辑上进行分组。借助舰队,您可以在多个集群中一致地管理各项功能及应用政策。使用舰队时,您可以跨多个集群管理 Cloud Service Mesh 服务网格。

架构

Cloud Service Mesh 通过对集群的数据平面进行编程来支持 GKE 上的 Gateway API,从而实现 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 实现控制平面可观测性。

后续步骤