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 上,代理由边车模式部署到网格中的微服务。在 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 MultiCloud,Cloud Service Mesh 支持 Istio API 用于 Kubernetes 工作负载。
无论是在 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 的托管式控制平面和数据平面(推荐)
- 适用于使用 Istio API 的 GKE 的集群内控制平面(不建议)
- 在 Google Cloud外部
- 适用于使用 Istio API 的 Kubernetes 的集群内控制平面
托管式 Cloud Service Mesh
托管式 Cloud Service Mesh 由适用于所有基础设施的托管式控制平面和适用于 GKE 的托管式数据平面组成。借助托管式 Cloud Service Mesh,Google 能够代您处理升级、扩缩和安全性,以让您最大限度地减少用户手动维护工作。这涵盖了控制平面、数据平面和相关资源。
数据平面实现
如果您使用 Google Cloud API,则数据平面可以由 Envoy 代理或无代理 gRPC 应用提供。如果您要更新现有应用,则可以使用基于边车的方法集成到网格中,而无需更改应用。如果您想避免运行边车的开销,可以更新应用以使用 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 结合使用。如需了解详情,请参阅使用 Google Cloud API 支持的功能的 Cloud Service Mesh。
如需确定当前的控制平面,请参阅识别控制平面实现。如需详细了解控制平面和控制平面迁移,请参阅面向现有客户的托管式控制平面概览。
面向新用户的控制平面实现
- 如果您计划使用Google Cloud 外部的配置,则表示您选择了 Cloud Service Mesh 的集群内非托管式控制平面。如需了解详情,请参阅集群内控制平面支持的功能。
- 如果您计划在 Kubernetes 上使用Google Cloud 上的配置,则表示您选择了 Istio API,但控制平面使用 Traffic Director 实现,决定控制平面实现的因素中详细介绍的某些例外情况除外。如需了解详情,请参阅使用 Istio API 支持的功能(托管式控制平面)。
- 如果您计划在 Compute Engine 虚拟机上使用Google Cloud 上的配置,控制平面会使用全球多租户控制平面(称为 Traffic Director 实现)。如需了解详情,请参阅使用 Google Cloud API 支持的功能的 Cloud Service Mesh。
控制平面迁移
如果您是现有 Anthos Service Mesh 客户,并且使用 Istio API,您的集群将开始迁移到 Traffic Director 控制平面。您可以继续使用 Istio API 进行配置。
如需确定您的集群仍在使用 Istio 控制平面,还是已迁移到新的全球控制平面,请参阅识别控制平面实现。
后续步骤
- 如果您是现有用户,请参阅面向现有客户的托管式控制平面。
- 如果您计划使用 GKE 进行设置,请参阅预配控制平面。
- 如果您计划使用 Compute Engine 和虚拟机进行设置,请参阅准备使用 Envoy 和无代理工作负载设置服务路由 API。