Cloud Service Mesh 的目标代理

本文档仅适用于使用负载均衡 API 的 Cloud Service Mesh。我们强烈建议您使用服务路由 API 来部署 Cloud Service Mesh。

配置 Cloud Service Mesh 时,您配置的资源之一是 目标代理。在 Cloud Service Mesh 环境中,目标代理为两个 主要用途:

  • 定义 Cloud Service Mesh 客户端打开与服务关联的后端或端点的连接时使用的协议。

  • 使用转发规则和网址映射创建路由规则映射。路由规则映射可提供其他功能(例如路由规则),具体取决于目标代理的类型。无效选择通常在界面中隐藏,或被 API 拒绝。

目标代理类型和请求协议

Cloud Service Mesh 会根据 您配置的目标代理的类型。配置目标时 则 Cloud Service Mesh 客户端会使用特定的请求协议。

目标代理 请求协议
HTTPS 客户端启动 HTTPS 连接
HTTP 客户端启动 HTTP 连接
gRPC 客户端启动 gRPC 连接
TCP 客户端启动 TCP 连接

您并非只能选择一种类型。例如,应用可能在对某些服务进行寻址时使用 HTTP,而在对其他服务进行寻址时使用 TCP。对于这种使用场景,您需要同时创建目标 HTTP 代理和目标 TCP 代理。

路由规则映射中的有效资源组合

为避免配置错误,Cloud Service Mesh 仅允许您创建路由规则 如下所示:

  • 转发规则 > 全局目标 HTTPS 代理 > 网址映射 > 一个或多个后端服务
  • 转发规则 > 全局目标 HTTP 代理 > 网址映射 > 一个或多个后端服务
  • 转发规则 > 全局目标 gRPC 代理 > 网址映射 > 一个或多个后端服务
  • 转发规则 > 全球目标 TCP 代理 > 一个后端服务

如果您使用 Google Cloud Console 设置目标 HTTP 代理,则目标代理会在路由规则映射配置中进行隐式设置。Google Cloud 控制台尚不支持 TCP 代理设置。

如果您使用的是 Google Cloud CLI 或 API,则需要明确配置目标代理。

流量处理

以下部分介绍了根据您使用的目标代理类型来处理流量的方法。

使用目标 HTTP 或 HTTPS 代理

配置基于 HTTP 或 HTTPS 的服务时,每个服务实例通常会一并部署 Envoy 代理。Cloud Service Mesh 配置此 Envoy 代理。它是服务网格数据层面的一部分,按如下方式处理流量。

Envoy 代理接收出站请求。然后,它会将请求的目标 IP 地址和端口与引用目标 HTTP 或 HTTPS 代理的每个转发规则中配置的 IP 地址和端口进行比较。如果找到匹配项,Envoy 代理会根据目标代理的相应网址映射评估请求。

使用目标 TCP 代理

配置基于 TCP 的服务时,每个服务实例通常会一并部署一个 Envoy 代理。Cloud Service Mesh 配置此 Envoy 代理。它是服务网格数据层面的一部分,按如下方式处理流量。

Envoy 代理接收出站请求。然后,它会将请求的目标 IP 地址和端口与引用目标 TCP 代理的每个转发规则中配置的 IP 地址和端口进行比较。每条转发规则都会将 TCP 流量路由到指向默认后端服务的目标代理。后端服务指定健康检查并确定相应的后端。

使用目标 gRPC 代理

配置基于 gRPC 的服务时,您的服务实例通常不会一并部署 Envoy 代理。相反,Cloud Service Mesh 会配置 gRPC 库。该库是服务网格数据层面的一部分,并按如下方式处理流量。

gRPC 库将 URI 中指定的 hostname[:port] 与目标 gRPC 代理引用的所有网址映射中的主机规则进行比较。如果找到匹配项,gRPC 库会根据与匹配主机规则关联的路径规则评估请求。

目标代理资源

要添加、删除、列出和获取有关目标代理的信息,可以使用 REST API 或 gcloud CLI。

此外,如需获取有关目标代理的信息,您可以使用以下 gcloud 命令:

gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies] list
gcloud compute [target-http-proxies | target-tcp-proxies | target-grpc-proxies] describe TARGET_PROXY_NAME

API

有关您在创建 Pod 时可用的属性和方法的说明, 与目标代理搭配使用 REST API,请参阅以下内容 Cloud Service Mesh 支持的资源:

gcloud CLI

对于 Google Cloud CLI,请参阅以下资源:

后续步骤