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 服务网格:
- Google Cloud API,可以是服务路由 API 或旧版 API
- Kubernetes Gateway API
本文档及关联的设置指南介绍了如何使用 Kubernetes Gateway API 来配置 Cloud Service Mesh 服务网格。
我们建议您使用 Kubernetes Gateway API Google Kubernetes Engine 上的 API,我们建议您不要同时使用这两个 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
资源是您将向其附加服务网格的路由和政策的位置。
舰队
舰队由一个或多个 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 仅监控配置集群中的资源,并且会忽略舰队中其他集群中的资源。如需详细了解配置集群,请参阅 GKE 文档中的配置集群设计。
使用 GKE 多集群服务时,配置集群中的 Gateway API 资源可以引用舰队内任何集群中的 Kubernetes 服务。请参阅 多集群服务 来详细了解多集群服务发现。
资源
Cloud Service Mesh 支持在服务网格的数据平面中使用 Envoy 代理和无代理 gRPC。两个客户端均从
特定服务网格的 Cloud Service Mesh)
TDMesh
资源的相应引导加载程序中的对应项目编号
配置。使用 Kubernetes Gateway API 的 Cloud Service Mesh 设置指南
使用 Envoy 和无代理 gRPC 提供演示数据平面配置。
TDMesh
项资源
通过
TDMesh
资源
是 Cloud Service Mesh 自定义资源。它是对开源项目的扩展
用于支持 Cloud Service Mesh 的服务网格用例的网关 API。使用 TDMesh
资源时,您会在舰队中创建服务网格实例。附加到 TDMesh
资源的路由指定了服务网格中的服务到服务路由行为。
Route
项资源
部分 Gateway API 路由资源可以附加到 TDMesh
资源,以指定服务网格中的服务级路由。Cloud Service Mesh 支持以下 Route
资源:
HTTPRoute
TCPRoute
TDGRPCRoute
(Cloud Service Mesh 自定义资源)
例如,您可以创建 HTTPRoute
以指定将发送到主机 payments.svc.internal
的 HTTP 请求路由到 Kubernetes 服务 service-payments
。将 HTTPRoute
资源附加到数据平面实例订阅的 TDMesh
资源时,系统会相应地路由网格中的工作负载发送的 HTTP 请求。
此版本通过新的路由类型 TDGRPCRoute
扩展了 Gateway API 中的通用 Route
资源。由于该新的路由类型会匹配原生 gRPC 原语(例如方法和服务定义),因此它能够在您路由 gRPC 请求时为您提供一流的体验。
限制
- Cloud Service Mesh 会为服务网格中的所有 Kubernetes 服务配置以下默认行为。您无法更改这些行为。
- 通过 Envoy 自动注入器 每个舰队仅支持一个网格。
- 无法使用 Gateway API 来启用 Cloud Service Mesh 的安全功能。
- 您只能使用 Gateway API 在 GKE 上配置
TDMesh
和Route
资源。您不能使用 Google Cloud 控制台、gcloud CLI 或 REST API。 - 所有集群都必须位于同一项目中。不支持跨位于多个项目的集群的服务网格。
- 您无法使用 Google Cloud 控制台配置或查看 GKE 服务网格。
- 不支持使用 Cloud Logging 和 Cloud Monitoring 实现控制平面可观测性。