封闭出站流量和封闭入站流量模式结合使用封闭出站流量和封闭入站流量,适用于需要在工作负载之间双向使用所选 API 的场景。工作负载可以在 Google Cloud、私有本地环境或其他云环境中运行。在此模式中,您可以使用 API 网关、Private Service Connect 端点或负载均衡器公开特定 API,并可选择提供身份验证、授权和 API 调用审核。
此模式与网状模式之间的主要区别在于,它适用于只需要双向 API 使用或与特定 IP 地址来源和目的地通信的场景,例如通过 Private Service Connect 端点发布的应用。由于通信仅限于公开的 API 或特定 IP 地址,因此您在设计中无需考虑跨环境的网络。常见的适用场景包括但不限于:
- 合并与收购。
- 与合作伙伴进行应用集成。
- 组织的应用和服务与管理自己的应用并托管在不同环境中的不同组织部门之间进行集成。
通信的工作原理如下:
- 您在 Google Cloud 中部署的工作负载可以使用内部 IP 地址与 API 网关(或特定目的地 IP 地址)进行通信。无法访问部署在私有计算环境中的其他系统。
- 相反,您在其他计算环境中部署的工作负载可以使用内部 IP 地址与 Google Cloud 端的 API 网关(或特定的已发布端点 IP 地址)进行通信。无法访问部署在 Google Cloud 中的其他系统。
架构
下图展示了封闭出站流量和封闭入站流量模式的参考架构:
上图中的设计方法包含以下要素:
- 在 Google Cloud 端,您在 VPC(或共享 VPC)中部署工作负载,而不将其直接公开到互联网。
- Google Cloud 环境网络扩展到其他计算环境。该环境可以是本地环境,也可以是其他云环境。如需扩展环境,请使用合适的混合云和多云连接通信模式来支持环境之间的通信,以便它们可以使用内部 IP 地址。
- (可选)通过启用对特定目标 IP 地址的访问,您可以使用中转 VPC 来帮助在应用 VPC 外部添加边界安全层。
- 您可以在中转 VPC 中使用 Cloud Next Generation Firewall 或具有新一代防火墙 (NGFW) 的网络虚拟设备 (NVA) 来检查流量以及允许或禁止来自特定来源的流量在到达应用 VPC 之前访问某些 API。
- 应该通过 API 网关或负载均衡器访问 API,以提供代理层以及服务 API 的抽象或外观 (facade)。
- 对于作为 API 使用的应用,您还可以使用 Private Service Connect 为已发布的应用提供内部 IP 地址。
- 所有环境都使用无重叠的 RFC 1918 IP 地址空间。
这种模式的常见应用涉及在 Google Cloud 中部署应用后端(或应用后端的子集),同时在本地环境或其他云中托管其他后端和前端组件(分层混合模式或分区多云模式)。随着应用不断演变并迁移到云端,通常会出现对特定云服务的依赖和偏好。
有时,这些依赖和偏好会导致应用和后端分布在不同云提供商。此外,某些应用可能使用分布在本地环境和多个云环境中的资源和服务组合进行构建。
对于分布式应用,外部 Cloud Load Balancing 混合云和多云连接功能可用于终结用户请求并将其路由到其他环境中的前端或后端。此路由通过混合网络连接进行,如下图所示。此集成可实现在不同环境中逐步分发应用组件。从前端发送到 Google Cloud 中托管的后端服务的请求可通过由内部负载均衡器(图中的 ILB)协助建立的混合网络连接安全地进行通信。
使用上图中的 Google Cloud 设计可帮助实现以下目标:
- 使用符合此模式通信模型的预定义 API,促进 Google Cloud、本地环境和其他云环境之间的双向通信。
- 如需为面向互联网的应用的全球前端提供分布式应用组件(前端或后端),并实现以下目标,您可以使用分布在入网点 (PoP) 的 Google Cloud 的高级负载均衡和安全功能:
- 使用无服务器托管服务降低资本支出并简化运营。
- 全球优化与应用后端的连接,以提高速度和降低延迟。
- Google Cloud 跨云网络通过最优专用连接在应用组件之间实现多云通信。
- 通过提供对 Cloud CDN 的访问权限,为使用全球 Cloud Load Balancing 的应用缓存需求量较高的静态内容并提高应用性能。
- 使用提供全球分布式 Web 应用防火墙 (WAF) 和 DDoS 缓解服务的 Google Cloud Armor 功能来保护面向互联网的应用的全球前端。
- (可选)您可以将 Private Service Connect 整合到您的设计中。这样,便可以实现从其他环境到 Google Cloud 服务 API 或您的已发布服务的专用访问,此类访问无需穿过公共互联网,并且您可以对其进行精细控制。
变体
封闭出站流量和封闭入站流量架构模式可以与其他方法结合使用,以满足不同的设计要求,同时仍顾及该模式的通信要求。这些模式提供以下选项:
分布式 API 网关
在类似基于分区多云模式的场景中,您可以在不同的云环境中构建应用(或应用组件),包括私有本地环境。共同要求是将发送到应用前端的客户端请求直接路由到托管应用(或前端组件)的环境。这种通信需要本地负载均衡器或 API 网关。这些应用及其组件可能还需要特定的 API 平台功能才能集成。
下图说明了如何设计 Apigee 和 Apigee Hybrid 以在每个环境中使用本地化的 API 网关来满足此类要求。API 平台管理集中在 Google Cloud 中。这种设计有助于强制执行严格的访问权限控制措施,即只有预先批准的 IP 地址(目标和目的地 API 或 Private Service Connect 端点 IP 地址)才能在 Google Cloud 和其他环境之间进行通信。
以下列表介绍了上图中使用 Apigee API 网关的两条不同的通信路径:
- 客户端请求直接在托管应用(或前端组件)的环境中到达应用前端。
- 每个环境中的 API 网关和代理处理多个环境中不同方向的客户端和应用 API 请求。
- Google Cloud (Apigee) 中的 API 网关功能公开托管在 Google Cloud 中的应用(前端或后端)组件。
- 另一个环境 (Hybrid) 中的 API 网关功能公开托管在该环境中的应用前端(或后端)组件。
您可以选择使用中转 VPC。中转 VPC 可以灵活地分离关注点,并在单独的 VPC 网络中执行安全检查和混合连接。从 IP 地址可达性角度来看,中转 VPC(连接了混合连接)可满足以下要求,以维持端到端可达性:
- 目标 API 的 IP 地址需要通告到托管客户端/请求方的其他环境。
- 需要与目标 API 通信的主机的 IP 地址必须通告到目标 API 所在的环境,例如 API 请求方(客户端)的 IP 地址。通过负载均衡器、代理、Private Service Connect 端点或 NAT 实例进行的通信是例外。
为了将连接扩展到远程环境,此设计使用具有使用方路由交换功能的直接 VPC 对等互连。此设计可让源自 Google Cloud 应用 VPC 中托管的工作负载的特定 API 请求通过中转 VPC 进行路由。或者,您也可以在应用 VPC 中使用 Private Service Connect 端点,该端点与中转 VPC 中具有混合网络端点组后端的负载均衡器相关联。下一部分(使用 Private Service Connect 进行双向 API 通信)介绍了该设置。
使用 Private Service Connect 进行双向 API 通信
有时,企业可能不需要立即使用 API 网关(例如 Apigee),或者可能想稍后再添加。但是,某些业务可能要求在不同环境中的某些应用之间进行通信和集成。例如,如果您的公司收购了另一家公司,您可能需要向该公司公开某些应用。他们可能需要向您的公司公开应用。两家公司可能在不同的环境(Google Cloud、本地或其他云)中托管各自的工作负载,并且必须避免 IP 地址重叠。在这种情况下,您可以使用 Private Service Connect 来协助进行有效通信。
对于作为 API 使用的应用,您还可以使用 Private Service Connect 为已发布的应用提供专用地址,以便跨区域和通过混合连接在专用网络中实现安全访问。这种抽象化有助于通过混合云和多云连接模型来集成来自各种云和本地环境的资源。它还支持跨多云环境和本地环境组合应用。这可以满足不同的通信要求,例如集成未使用或不计划使用 API 网关的安全应用。
通过将 Private Service Connect 与 Cloud Load Balancing 搭配使用(如下图所示),您可以实现两条不同的通信路径。每条路径从不同方向发起,用于不同的连接目的,最好是通过 API 调用。
- 本指南中讨论的所有 Private Service Connect 设计考虑事项和建议都适用于此设计。
- 如果需要额外的第 7 层检查,您可以在此设计中集成 NVA(在中转 VPC 中)。
- 此设计可在有或没有 API 网关的情况下使用。
上图中所示的两条连接路径表示独立的连接,并不是单个连接或流的双向通信。
使用 Private Service Connect 端点和接口进行双向通信
如封闭入站流量模式中所述,启用客户端-服务通信的一种方法是使用 Private Service Connect 端点将提供方 VPC 中的服务公开给使用方 VPC。该连接可以通过混合连接扩展到本地环境,甚至是其他云服务提供商环境。不过,在某些情况下,托管服务也可能需要专用通信。
为了访问特定服务(例如从可以托管在使用方 VPC 内部或外部的数据源中检索数据),这种专用通信可以在应用(提供方)VPC 与远程环境(例如本地环境)之间进行。
在这种情况下,Private Service Connect 接口可让服务提供方虚拟机实例访问使用方的网络。它通过共享网络接口来实现这一点,同时仍保持提供方与使用方角色的分离。借助使用方 VPC 中的这个网络接口,应用虚拟机可以访问使用方资源,就像它们本地位于提供方 VPC 中一样。
Private Service Connect 接口是连接到使用方(中转)VPC 的网络接口。可以访问可从连接了 Private Service Connect 接口的使用方(中转)VPC 访问的外部目的地。因此,此连接可以通过混合连接扩展到外部环境(例如本地环境),如下图所示:
如果使用方 VPC 是外部组织或实体(例如第三方组织),通常您无法保护与使用方 VPC 中 Private Service Connect 接口的通信。在这种情况下,您可以在 Private Service Connect 接口虚拟机的客户机操作系统中定义安全政策。如需了解详情,请参阅为 Private Service Connect 接口配置安全性。或者,如果该方法不符合您的组织的安全合规性或标准,您可以考虑采用其他方法。
最佳做法
如果需要由托管在私有本地环境或其他云环境中的前端在本地接收来自互联网的客户端请求,请考虑使用 Hybrid 作为 API 网关解决方案。
- 此方法还有助于将解决方案迁移到完全由 Google Cloud 托管的环境,同时保持 API 平台 (Apigee) 的一致性。
当这些环境属于长期或永久的混合或多云设置时,如需最大限度地减少延迟并优化将大量数据出站转移到其他环境的费用,请考虑以下事项:
- 使用 Cloud Interconnect 或 Cross-Cloud Interconnect。
- 如需在适当的环境中在目标前端终结用户连接,请使用 Hybrid。
在适用于您的要求和架构的情况下,请将 Apigee Adapter for Envoy 与使用 Kubernetes 的 Hybrid 部署搭配使用。
在设计连接和路由路径之前,首先需要确定需要将哪些流量或 API 请求定向到本地或远程 API 网关,以及来源和目标环境。
在项目或 VPC 网络级别指定服务边界,以使用 VPC Service Controls 保护项目中的 Google Cloud 服务并降低数据渗漏的风险。
- 您可以通过授权 VPN 或 Cloud Interconnect 将服务边界扩展到混合环境。如需详细了解服务边界的优势,请参阅 VPC Service Controls 概览。
使用 Virtual Private Cloud (VPC) 防火墙规则或防火墙政策来控制通过 Private Service Connect 端点对 Private Service Connect 资源的网络级访问。例如,应用(使用方)VPC 中的出站防火墙规则可以限制从虚拟机实例到端点的 IP 地址或子网的访问。
使用 Private Service Connect 接口时,您必须为 Private Service Connect 接口配置安全性,以保护与该接口的通信。
如果专用子网中的某个工作负载需要访问互联网,请使用 Cloud NAT 来避免为该工作负载分配外部 IP 地址以及暴露给公共互联网。
查看混合云和多云网络模式的一般最佳实践。