Cloud Service Mesh 概览
Cloud Service Mesh 是 Google Cloud 和受支持的 GKE Enterprise 平台上提供的服务网格。它支持在一系列计算基础架构上运行的服务。Cloud Service Mesh 由专为 Google Cloud 或开源设计的 API 控制。
如果您是 Cloud Service Mesh 新用户,或者是继续使用 Anthos Service Mesh 或 Traffic Director 的客户,请参阅本文档。
什么是服务网格?
服务网格是一种架构,可在您的服务之间实现代管、可观测的安全通信,让您更轻松地在所选基础架构上创建由众多微服务组成的稳健的企业应用。服务网格使用一致的强大工具管理运行服务的常见要求(例如监控、网络和安全),使服务开发者和运营者能够专注于为其用户创建和管理出色的应用。
在架构上,服务网格由一个或多个控制平面和数据平面组成。服务网格会监控进入和离开服务的所有流量。在 Kubernetes 上,代理将由 Sidecar 模式部署到网格中的微服务。在 Compute Engine 上,您可以在虚拟机上部署代理,也可以为数据平面使用无代理 gRPC。
此模式可将应用或业务逻辑与网络功能分离开来,使开发者能够专注于业务所需的功能。服务网格使运营团队和开发团队可以将他们的工作彼此分离。
为应用采用微服务架构可以带来诸多好处。但是,随着规模的扩大,您的工作负载可能会变得更加复杂和碎片化。服务网格有助于解决碎片化问题,并简化微服务的管理。
什么是 Cloud Service Mesh?
Cloud Service Mesh 是 Google 为 Google Cloud 和受支持的 GKE Enterprise 环境推出的解决方案。
- 在 Google Cloud 上:Cloud Service Mesh 提供特定于工作负载运行所在计算基础架构的 API。
- 对于 Compute Engine 工作负载,Cloud Service Mesh 使用 Google Cloud 专用服务路由 API。
- 对于 Google Kubernetes Engine (GKE) 工作负载,Cloud Service Mesh 使用开源 Istio API。
- 在 Google Cloud 之外:借助 Distributed Cloud 或 GKE 多云,Cloud Service Mesh 支持 Kubernetes 工作负载的 Istio API。
无论是在 Google Cloud 上还是在 Google Cloud 之外,借助 Cloud Service Mesh,您都可以管理、观察和保护服务,而无需更改应用代码。
Cloud Service Mesh 可以全方位简化服务交付流程(从流量管理和网格遥测,到确保服务间通信的安全),从而为您的运维团队和开发团队减轻负担。借助 Google 的全代管式服务网格,您可以管理复杂的环境并获享其承诺的所有优势。
特性
Cloud Service Mesh 提供一套用于流量管理、可观测性和遥测以及安全性的功能。
流量管理
Cloud Service Mesh 控制网格中服务之间的流量、进入网格的流量(入站流量)以及流向外部服务的流量(出站流量)。您可以配置和部署资源,以在应用 (L7) 层管理此流量。例如,您可以执行以下操作:
- 使用服务发现。
- 在服务之间配置负载均衡。
- 创建 Canary 版部署和蓝绿部署。
- 精细控制服务的路由。
- 设置断路器。
Cloud Service Mesh 按名称和各自的端点维护网格中所有服务的列表。它会维护此列表以管理流量流动(例如 Kubernetes pod IP 地址或托管实例组中的 Compute Engine 虚拟机的 IP 地址)。通过使用此服务注册表以及与服务并行运行代理,网格可以将流量定向到相应的端点。无代理 gRPC 工作负载还可以与使用 Envoy 代理的工作负载并行使用。
可观测性数据分析
Google Cloud 控制台中的 Cloud Service Mesh 界面可提供有关服务网格的深入分析。系统会为通过 Istio API 配置的工作负载自动生成这些指标。
- 网格 GKE 集群中的 HTTP 流量服务指标和日志会自动提取到 Google Cloud。
- 预配置的服务信息中心可为您提供了解服务所需的信息。
- 借助深度遥测功能(由 Cloud Monitoring、Cloud Logging 和 Cloud Trace 提供支持),您可以深入了解服务指标和日志。您可以过滤并细分各种属性的数据。
- 服务到服务关系有助于您一目了然地了解服务间依赖关系,以及连接到每项服务的用户。
- 您不仅可以快速了解您的服务的通信安全状况,还可以了解该服务与其他服务的关系。
- 通过服务等级目标 (SLO),您可以深入了解服务的运行状况。您可以定义 SLO 并针对您自己的服务运行状况标准发出提醒。
如需详细了解 Cloud Service Mesh 的可观测性功能,请参阅我们的可观测性指南。
安全优势
Cloud Service Mesh 可为您带来诸多安全优势。
- 降低使用被盗凭据重放或冒充别人攻击的风险。Cloud Service Mesh 依赖于双向 TLS (mTLS) 证书进行对等身份验证,而不是 JSON Web 令牌 (JWT) 等不记名令牌。
- 确保传输加密。使用 mTLS 进行身份验证还可确保所有 TCP 通信在传输过程中都经过加密。
- 降低未经授权的客户端访问包含敏感数据的服务的风险,而不考虑客户端的网络位置和应用级凭据。
- 降低您的生产网络中发生用户数据泄露的风险。您可以确保内部人员只能通过获授权的客户端访问敏感数据。
- 识别哪些客户端访问了包含敏感数据的服务。除 IP 地址外,Cloud Service Mesh 访问日志记录还会捕获客户端的 mTLS 身份。
- 所有集群内控制平面组件均使用已通过 FIPS 140-2 验证的加密模块构建而成。
请参阅安全指南,详细了解 Service Mesh 的安全优势和功能。
部署选项
Cloud Service Mesh 中有以下部署选项:
- 在 Google Cloud 上
- 托管式 Cloud Service Mesh - 适用于 GKE 的托管式控制平面和数据平面(推荐)
- 托管式 Cloud Service Mesh - 适用于 Compute Engine 虚拟机的托管式控制平面和数据平面(推荐)
- 适用于 GKE 的集群内控制平面(使用 Istio API;不建议)
- 不使用 Google Cloud
- 适用于 Kubernetes 的集群内控制平面(使用 Istio API)
托管式 Cloud Service Mesh
托管式 Cloud Service Mesh 由适用于所有基础架构的托管式控制平面和适用于 GKE 的托管式数据平面组成。借助托管式 Cloud Service Mesh,Google 能够代您处理升级、伸缩和安全性,以让您最大限度地减少用户手动维护工作。这涵盖了控制平面、数据平面和相关资源。
数据平面实现
如果您使用 Google Cloud API,则数据平面可以由 Envoy 代理或无代理 gRPC 应用提供。如果您要更新现有应用,则可以使用基于 Sidecar 的方法进行集成,而无需更改应用。如果您想避免运行 Sidecar 的开销,可以更新应用以使用 gRPC。
Envoy 代理和无代理 gRPC 都使用 xDS API 连接到控制平面。如果您使用无代理 gRPC,则可以为应用选择受支持的语言,包括 Go、C++、Java 和 Python。
如果您使用的是开源 Istio API,则数据平面由 Envoy 代理提供。
控制平面实现
Cloud Service Mesh 控制平面取决于您的配置是否启用了 Google Cloud,以及您是否为新客户。
现有用户的控制平面实现
- 如果您的配置未在 Google Cloud 上,则表示您使用的是 Cloud Service Mesh 的集群内非托管式控制平面。如需了解详情,请参阅集群内控制平面支持的功能。
- 如果您是 Google Cloud 上的 Anthos Service Mesh 用户,则表示您在使用 Istio API。如需了解详情,请参阅使用 Istio API 的受支持功能(受管理的控制平面) 。
- 如果您是 Traffic Director 用户,则表示您将 Cloud Service Mesh 的托管式控制平面与 Google Cloud API 搭配使用。如需了解详情,请参阅支持 Cloud Service Mesh 与 Google Cloud API 搭配使用的功能。
如需确定您当前的控制平面,请参阅确定控制平面实现。如需详细了解控制平面和控制平面迁移,请参阅面向现有客户的托管式控制平面概览。
面向新用户的控制平面实现
- 如果您计划进行非 Google Cloud 配置,则表示您选择了 Cloud Service Mesh 的集群内非托管式控制平面。如需了解详情,请参阅集群内控制平面支持的功能。
- 如果您计划在 Kubernetes 上进行 Google Cloud 上配置,则选择 Istio API,但您的控制平面使用的是 Traffic Director 实现,决定控制平面实现的因素中详细介绍了除此之外的特定情况。如需了解详情,请参阅使用 Istio API 的受支持功能(受管式控制平面)。
- 如果您计划在 Compute Engine 虚拟机上进行 Google Cloud 上配置,则您的控制平面将使用全球多租户控制平面(称为 Traffic Director 实现)。如需了解详情,请参阅Cloud Service Mesh 与 Google Cloud API 支持的功能。
控制平面迁移
如果您是继续使用 Anthos Service Mesh 的客户,并且使用 Istio API,您的集群将开始迁移到 Traffic Director 控制平面。您可以继续使用 Istio API 进行配置。
如需确定您的集群是否仍在使用 Istio 控制平面,还是已迁移到新的全球控制平面,请参阅确定控制平面实现。
后续步骤
- 如果您是现有用户,请参阅面向现有客户的托管控制平面。
- 如果您打算使用 GKE 进行设置,请参阅预配控制平面。
- 如果您打算使用 Compute Engine 和虚拟机进行设置,请阅读准备使用 Envoy 和无代理工作负载在服务路由 API 上进行设置。