配置共享 VPC 网络

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

本页面介绍了 Cloud Composer 的共享 VPC 网络和宿主项目要求。

通过共享 VPC,组织可以在项目级层建立预算和访问权限控制边界,并使用专用 IP 跨这些边界进行安全高效的通信。在共享 VPC 配置中,Cloud Composer 可以调用同一组织中其他 Google Cloud 项目中托管的服务,而无需将服务公开给公共互联网。

共享 VPC 的准则

Cloud Composer 的服务和宿主项目
图 1. 以下各项的服务和宿主项目: Cloud Composer
  • 共享 VPC 要求您指定网络和子网所属的宿主项目以及与该宿主项目关联的服务项目。当 Cloud Composer 参与共享 VPC 时,Cloud Composer 环境位于服务项目中。

  • 如需设置共享 VPC,请在宿主项目中选择以下 IP 范围:

    • Cloud Composer 用作其 Compute Engine 层的 GKE 节点所用子网的主要 IP 范围
    • GKE 服务的次要 IP 范围
    • GKE pod 的次要 IP 范围
  • 次要 IP 范围不能与此 VPC 中的任何其他次要范围重叠。

  • 确保次要范围足以适应集群大小环境扩缩需求

    请参阅创建 VPC 原生集群,了解有关如何配置 pod 的次要范围服务的次要范围的准则。

  • 子网的主要地址范围 应该能够满足预期的增长,并考虑到 不可用的 IP 地址

  • 如果您使用 IP 伪装代理和 为您的环境配置专用 IP 配置,然后 将节点和 Pod 的 IP 地址范围添加到nonMasqueradeCIDRs ip-masq-agent ConfigMap。如需了解详情,请参阅配置 IP 伪装代理

准备工作

  1. 找到以下项目 ID 和项目编号

    • 宿主项目:共享 VPC 网络所属的项目。
    • 服务项目:Cloud Composer 环境所属的项目。
  2. 让您的组织做好准备

  3. 在宿主项目和服务项目中启用 GKE API

  4. 如果您使用 Google Cloud 控制台在服务项目中创建环境,则您的账号在宿主项目中必须具有 compute.subnetworks.use 权限。否则,可用子网列表不包含宿主项目中的子网。如果您使用 gcloud、API 或 Terraform 创建环境,则您的账号不需要此额外的权限。

配置服务项目

如果服务项目中从未创建过 Cloud Composer 环境,请在服务项目中预配 Composer Service Agent 账号:

gcloud beta services identity create --service=composer.googleapis.com`

配置宿主项目

按照下文所述配置宿主项目。

(专用 IP)启用专用 Google 访问权限

如果您打算使用专用 IP 环境,请为宿主项目中的子网启用专用 Google 访问通道。您可以在下一步为新子网或现有子网配置网络资源时执行此操作。

如果您打算使用公共 IP 环境,我们仍建议为宿主项目中的子网启用专用 Google 访问通道。如果您选择不使用专用 Google 访问通道,那么请确保您 不会屏蔽那些 隐式 IPv4 允许出站防火墙规则 允许。要成功访问 *.googleapis.com 个端点,必须执行此操作。

配置网络资源

选择以下选项之一,以分配和配置网络 资源。对于每个选项,您必须为 Pod 的次要 IP 范围命名 和服务

设置共享 VPC 并关联服务项目

  1. 如果您尚未这样做,请设置共享 VPC。如果您已经设置了共享 VPC,请跳到下一步。

  2. 关联服务项目,以用于托管 Cloud Composer 环境。

    关联项目时,保留默认的 VPC 网络权限。

向 Composer 服务代理账号授予权限

在宿主项目中:

  1. 拥有 Composer Service Agent 账号 (service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com) 的修改权限

  2. 对于此账号,请在项目级别添加其他角色:

    • 对于专用 IP 环境,请添加 Composer Shared VPC Agent 角色。

    • 对于公共 IP 环境,请添加 Compute Network User 角色。

向 Google API 服务代理账号授予权限

在宿主项目中:

  1. 修改 Google API 服务代理账号的权限, SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com

  2. 在项目级别添加另一个角色:Compute Network User (compute.networkUser)。这是与共享 VPC 一起使用的代管式实例组的一项要求,因为此类型的服务账号会执行创建实例等任务。

拥有 GKE 服务账号的修改权限

在宿主项目中,拥有 GKE 服务账号 service-SERVICE_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com 的修改权限。

对于每个服务账号 添加其他角色(compute.networkUser 以下选项:

  • 在子网级别授予此角色,以允许服务账号设置 Cloud Composer 所需的 VPC 对等互连。在这种情况下, 指定环境要使用的子网,因为 环境的集群可能无权在 网络。

  • 在项目级为整个宿主项目授予此角色。在这种情况下,服务项目的 GKE 服务账号有权使用宿主项目中的任何子网。

拥有服务项目的 GKE 服务账号的修改权限

在宿主项目中,修改 服务项目的 GKE 服务账号。

为此账号在项目级别添加另一个角色,即 Kubernetes Engine Host Service Agent User (roles/container.hostServiceAgentUser)。

这样,服务项目的 GKE 服务账号便可使用宿主项目的 GKE 服务账号来配置共享网络资源。

(专用 IP,可选)配置防火墙规则以及与 Google 网域的连接

在具有专用 IP 环境的共享 VPC 配置中,作为一个选项, 您可能需要将所有流量都路由到 Google API 和服务 属于 private.googleapis.com 网域的多个 IP 地址,并且 配置相应的防火墙规则。在此配置中,您的 环境仅通过 IP 地址访问 Google API 和服务 可在 Google Cloud 内部路由如果您的共享 VPC 配置使用 VPC Service Controls,请改为通过 restricted.googleapis.com 路由流量。

如果您的共享 VPC 配置使用专用 IP 环境:

  1. (可选)配置与 Google API 和服务的连接
  2. (可选)配置防火墙规则

如果您的共享 VPC 配置使用 VPC Service Controls,请改用适用于使用 VPC Service Controls 的环境的说明:

  1. 配置与 Google API 和服务的连接
  2. 配置防火墙规则

总结

您已完成服务和主机的共享 VPC 网络配置 项目。

现在,您可以在使用主机的服务项目中创建新环境 项目的 VPC 网络

后续步骤