使用 Google Cloud API 支持功能的 Cloud Service Mesh

本文档汇总了 Cloud Service Mesh 中提供的特性。

Cloud Service Mesh 由您的应用、与 xDS 兼容的 数据平面(开源 Envoy 代理或 gRPC) 无代理数据平面),并使用 Cloud Service Mesh 作为控制平面。

在下表中,值“N/A(不适用)”意味着某项功能不受支持,因为它与特定的 Cloud Service Mesh 配置不兼容。空白(没有对勾标记或“不适用”)表示不支持该功能。

其中一些功能仅可通过负载均衡 API 使用。我们强烈建议您使用服务路由 API,而不是使用负载均衡 API 创建新的部署。

支持的 xDS 版本

Cloud Service Mesh 使用开源 xDS 控制平面 API 来配置 Envoy 和无代理 gRPC 客户端。这些客户端代表您的应用代码提供 Cloud Service Mesh 的应用网络功能。

仅支持 xDS v3。如果您使用的是 xDS v2,请迁移到 xDS v3。相关信息 有关如何迁移的信息,请参阅从 xDS v2 迁移到 xDS v3

运行网格服务的平台

您可以在以下平台上运行应用,并将它们纳入到全球范围内 由 Cloud Service Mesh 配置的服务网格。

特征 支持
Compute Engine 虚拟机 (VM) 实例
Google Kubernetes Engine (GKE) 容器实例
Compute Engine 容器实例上的 Kubernetes

服务管理

Cloud Service Mesh 配置的服务在以下方面具有如下优势:

  • 服务发现。当网格中的应用要访问其他应用时,可以通过名称调用该服务。

  • 后端自动扩缩。运行应用代码的实例会根据您的需求动态扩缩。

  • 自动端点注册。创建新实例或删除实例时,这些实例会自动与您的服务关联。

特征 支持
自动部署 Compute Engine 虚拟机的 Sidecar 代理
自动注入 GKE Pod 的 Sidecar 代理
基于主机名的服务发现
基于 CPU 利用率的实例自动扩缩
根据流量负载/服务容量自动扩缩实例
(仅限代管式实例组(或 MIG)中的 Compute Engine 虚拟机)
基于可配置健康检查的实例自动修复
Compute Engine 虚拟机的自动端点注册
GKE 容器实例/Pod 的自动注册端点
用于以编程方式添加或移除端点的 API

用于数据平面流量的端点

微服务使用数据平面访问网格内外的服务。借助 Cloud Service Mesh 应用逻辑与网络逻辑,让应用只需 向数据平面发送请求(例如,运行的边车代理) 与应用一同显示)。然后,数据平面将请求发送到正确的端点。

在下表中,描述为位于网格中的应用是使用 Cloud Service Mesh 代管的数据平面与其他服务通信的应用。这些应用可以将流量发送到网格内服务以及网格外的服务。

特征 支持
网格中基于虚拟机的应用
网格中基于容器的应用
网格外基于虚拟机的应用
网格外基于容器的应用
在本地数据中心内运行的应用
多云端环境中的应用

数据平面拓扑

在服务网格模型中,您的应用使用数据平面进行通信。此数据平面通常包含与应用一起部署的 Sidecar 代理。Cloud Service Mesh 高度灵活,并且支持可满足您服务网络需求的数据平面拓扑。

特征 支持
与应用一起运行的 Sidecar 代理
无代理 gRPC 应用
网格中两个应用之间的中间代理
网格边界处的边缘代理
跨多个 GKE 集群和/或多个地区中 Compute Engine 虚拟机的网格

API 驱动的编程式配置

我们的 REST API 和信息中心提供了所有配置项,可让您在大规模团队之间自动执行更改,并通过编程的方式管理更改。某些功能无法使用 Google Cloud 控制台进行配置。

特征 支持
REST API
Google Cloud Console
Google Cloud CLI
Cloud Deployment Manager
Terraform 支持

无代理 gRPC 应用的语言支持

您可以使用以下编程语言,创建可与 Cloud Service Mesh 搭配使用的无代理 gRPC 应用。GitHub 中列出了 gRPC 的各个实现和版本所支持的服务网格功能。

语言 支持
Java
Go
C++
Python
Ruby
PHP
节点

请求协议

使用 通过 Cloud Service Mesh 配置的数据平面进行通信。

特征 支持
HTTP
HTTPS
HTTP/2
TCP
gRPC

服务安全

Cloud Service Mesh 支持以下配置的服务安全性。

特征 Envoy gRPC
将 TLS 与 GKE Pod 搭配使用
将 mTLS 与 GKE pod 搭配使用
访问权限控制和授权

路由和流量管理

Cloud Service Mesh 支持高级流量管理政策,您可以在流量通过数据平面时对其进行引导、拆分和调整。

某些高级流量管理功能不适用于无代理 gRPC 服务,并且高级流量管理功能都不适用于目标 TCP 代理资源。

使用 Cloud Service Mesh 时,不支持以下功能 处理 TCP(非 HTTP(S))流量。

特征 支持配置为处理 HTTP(S) 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
HTTP/第 7 层请求路由,基于以下项的后缀/前缀/完整/正则表达式匹配:
• 主机名
• 路径
• 标头
• 方法 不适用
• Cookie
• 请求参数 不适用
故障注入
可配置超时 不适用
请参阅流时长上限
重试
每次重试超时除外
重定向
URI 重写
请求/响应标头转换
流量拆分
流量镜像
离群值检测
熔断
仅限 maxRequests
流时长上限

负载平衡

您可以配置高级负载平衡方法和算法,以在服务、后端组(实例组或网络端点组)以及单个后端或端点级别进行负载平衡。如需了解详情,请参阅后端服务概览高级负载均衡概览

特征 支持配置为处理 HTTP(S)、TCP 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
基于区域(首选具有正常后端容量的最近区域)的后端(实例组或网络端点组)选择
使用基于速率(每秒请求数)的平衡模式的后端选择。
TCP(非 HTTP(S))流量不支持此功能。
基于平衡模式(基于利用率)的后端选择(仅 Compute Engine 实例组中的虚拟机)
每个后端可配置的最大容量(仅限 Compute Engine 和 GKE)

基于可配置负载均衡政策的后端选择。

如需了解每个内置政策,请参阅 localityLbPolicy

  • 使用单个内置政策;从以下选项中进行选择:

    • 轮循
    • 最低请求数量
    • 环哈希
    • 随机
    • 原始目标位置
    • Maglev

服务弹性

Cloud Service Mesh 支持可帮助您提高服务弹性的功能。例如,您可以使用 Cloud Service Mesh 蓝绿部署模式、Canary 版测试或熔断 (EnvoygRPC)。

特征 支持配置为处理 HTTP(S)、TCP 或 gRPC 流量的 Envoy 代理 无代理 gRPC 支持
基于加权流量拆分的服务选择
熔断
仅限 maxRequests

服务和后端容量管理

Cloud Service Mesh 会将服务和后端容量纳入考量, 您的服务之间流量的最佳分配后端。云服务网格 与 Google Cloud 基础设施集成, 来收集容量数据您也可以手动设置和配置容量。

特征 支持
根据 CPU 自动跟踪代管式实例组 (MIG) 中虚拟机实例的后端容量和利用率。
根据请求速率,为 MIG 和网络端点组 (NEG) 中的虚拟机和容器实例手动设置容量和替换项。
手动排空容量。

故障切换

企业工作负载通常依赖于高可用性部署来确保服务正常运行时间。Cloud Service Mesh 通过启用多区域/多地区冗余来支持这些类型的部署。

特征 支持
自动故障切换到同一区域内具有正常后端容量的其他可用区。
自动故障切换到具有正常后端容量的最近区域。

健康检查

Cloud Service Mesh 支持集中式健康检查以确定后端 health。

如需了解参考信息,请参阅健康检查概览

特征 支持
gRPC 健康检查
HTTP 健康检查
HTTPS 健康检查
HTTP/2 健康检查
TCP 健康检查

可配置的健康检查:

  • 端口
  • 检查间隔时间
  • 超时
  • 运行状况正常和不正常的阈值
可配置的请求路径(HTTP、HTTPS、HTTP/2)
可配置的请求字符串或路径(TCP 或 SSL)
可配置的预期响应字符串

可观测性

可观测性工具提供监控、调试和性能信息,以帮助您了解服务网格。以下功能要么默认提供,要么是在数据平面中配置的。您的应用代码无需执行任何特殊操作即可生成此可观测性数据。

服务运行状况信息中心适用于无代理 gRPC 服务,但您无法配置数据平面日志记录和跟踪。云服务网格 无法配置 gRPC 应用的日志记录和跟踪。您可以按照开源网站上提供的问题排查部分或 gRPC 指南中的说明启用日志记录与跟踪。例如,如需在无代理 gRPC 服务中启用指标收集和跟踪,您可以使用 Opencensus

特征 代理支持 无代理 gRPC 服务支持
服务运行状况信息中心
数据平面日志记录
数据平面跟踪记录

会话亲和性

客户端与服务器的通信通常涉及多个连续请求。在这种情况下,将连续的客户端请求路由到同一后端或服务器会很有帮助。Cloud Service Mesh 提供可配置的选项,以便尽力将来自特定客户端的请求发送到同一后端(只要该后端运行状况良好且有足够的容量)。如需了解详情,请参阅后端服务概览

特征 支持使用 HTTP(S) 代理 支持使用 TCP 代理 无代理 gRPC 服务支持
客户端 IP 地址
HTTP Cookie 不适用
HTTP 标头 不适用
生成的 Cookie(在第一次请求时设置客户端 Cookie) 不适用

网络拓扑

Cloud Service Mesh 支持常见的 Google Cloud 网络拓扑。

特征 支持
Google Cloud 项目中的单个网络
Google Cloud 项目中的多个网格
Google Cloud 项目中的多个网关
共享 VPC(跨多个 Google Cloud 项目共享的单个网络)

如需详细了解 Cloud Service Mesh 如何支持共享 VPC,请参阅限制

合规性

Cloud Service Mesh 符合以下标准。

合规性认证 支持
HIPAA
ISO 27001、ISO 27017、ISO 27018
SOC1、SOC2、SOC3
PCI DSS

后续步骤