Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页面介绍了 Managed Airflow 的共享 VPC 网络和宿主项目要求。
共享 VPC 使组织能够在项目级层建立 预算和访问权限控制边界,同时 允许使用 专用 IP 跨这些边界进行安全高效的通信。 在共享 VPC 配置中,Managed Service for Apache Airflow 可以调用 同一组织中其他 Google Cloud 项目中托管的服务 而无需将服务公开给公共互联网。
共享 VPC 的准则
共享 VPC 要求您指定网络和子网所属的 宿主项目以及与该宿主项目关联的 服务项目。当 Managed Airflow 参与共享 VPC 时,Managed Airflow 环境位于服务项目中。
如需设置共享 VPC,请在宿主项目中选择以下 IP 范围:
- Managed Airflow 用作其 Compute Engine 层的 GKE 节点所用子网的主要 IP 范围。
- GKE 服务的次要 IP 范围。
- GKE pod 的次要 IP 范围
次要 IP 范围不能与此 VPC 中的任何其他次要范围重叠。
-
请参阅创建 VPC 原生集群,了解有关如何配置 pod 的次要范围和服务的次要范围的准则。
子网的主要地址范围 应当能够适应预期增长的需求,并且必须考虑 不可用的 IP 地址。
如果您为环境使用 IP 伪装代理 和 专用 IP 配置,请将节点和 pod 的 IP 范围添加到
nonMasqueradeCIDRs部分的ip-masq-agentConfigMap。如需了解详情,请参阅 配置 IP 伪装代理。
准备工作
-
- 宿主项目:共享 VPC 网络所属的项目。
- 服务项目:包含托管式 Airflow 环境的项目。
在宿主项目和服务项目中启用 GKE API 。
如果使用 Google Cloud 控制台在服务项目中创建环境,则您的账号在宿主项目中必须具有
compute.subnetworks.use权限。 否则,可用子网列表不包含宿主项目中的子网。如果使用gcloud、API 或 Terraform 创建环境,则您的账号不需要此额外的权限。
配置服务项目
如果服务 项目中从未创建过 Managed Airflow 环境,请 在服务项目中 预配 Composer 服务代理账号:
gcloud beta services identity create --service=composer.googleapis.com
配置宿主项目
按照下文所述配置宿主项目。
(专用 IP)启用专用 Google 访问通道
如果您打算使用 专用 IP 环境,请为宿主项目中的子网 启用专用 Google 访问通道。您可以在下一步为新子网或现有子网配置网络资源时执行此操作。
如果您打算使用 公共 IP 环境,我们仍然建议您
启用专用 Google 访问通道,以便在宿主
项目中为子网启用。如果您选择不使用专用 Google 访问通道,请确保您不会阻止隐式 IPv4 允许出站流量防火墙规则允许的流量。这是成功访问 *.googleapis.com 端点所必需的。
配置网络资源
选择以下任一选项以分配和配置网络资源。对于每个选项,您必须为 pod 和服务的次要 IP 范围命名。
方法 1. 创建新的 VPC 网络、子网和两个次要 IP 范围。
创建子网时,请按照相关准则使用主要 IP 范围。
定义子网时,请为 pod 和服务定义两个次要 IP 范围。
方法 2. 在现有 VPC 中创建子网和两个次要 IP 范围。
创建子网时,请按照相关准则使用主要 IP 范围。
定义子网时,请为 pod 和服务定义两个次要 IP 范围。
方法 3. 在现有子网和 VPC 网络中创建两个次要 IP 范围。
- 按照相关准则为 Pod 和服务定义两个次要 IP 范围 。避免名称和 IP 范围与现有次要范围冲突。
设置共享 VPC 并关联服务项目
向 Composer 服务代理账号授予权限
在宿主项目中:
拥有 Composer 服务代理账号
service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.的修改权限对于此账号,请在项目级层添加其他角色:
对于 专用 IP 环境,请添加
Composer Shared VPC Agent角色。对于公共 IP 环境,请添加
Compute Network User角色。
向 Google API 服务代理账号授予权限
在宿主项目中:
拥有 Google API 服务代理账号
SERVICE_PROJECT_NUMBER@cloudservices.的修改权限。在项目级层添加其他角色,即 Compute Network User (
compute.networkUser)。这是与共享 VPC 一起使用的代管式实例组的一项 要求 ,因为此类型的服务帐号会执行创建实例等 任务。
拥有 GKE 服务账号的修改权限
在宿主项目中,拥有 GKE
服务账号
service-SERVICE_PROJECT_NUMBER@container-engine-robot. 的修改权限。
对于每个服务帐号,
请使用以下任一选项
添加其他角色 compute.networkUser:
在子网级层授予此角色,以允许服务帐号设置 Managed Service for Apache Airflow 所需的 VPC 对等互连。在这种情况下,请明确指定环境要使用的子网,因为环境的集群可能缺少在网络中查找子网的权限。
在项目级层为整个宿主项目授予此角色。在这种情况下,服务项目的 GKE 服务帐号有权使用宿主项目中的任何子网。
拥有服务项目的 GKE 服务账号的修改权限
在宿主项目中,拥有服务项目的 GKE 服务账号的修改权限。
对于此账号,请在项目级层添加其他角色,
Kubernetes Engine Host Service Agent User
(roles/container.hostServiceAgentUser)。
这允许该服务项目的 GKE 服务账号使用宿主项目的 GKE 服务账号来配置共享网络资源。
(专用 IP,可选)配置防火墙规则和与 Google 网域的连接
在具有专用 IP 环境的共享 VPC 配置中,您可以选择将所有流量路由到属于 private.googleapis.com 网域的多个 IP 地址,并配置相应的防火墙规则。在此配置中,您的
环境通过仅可从内部
路由的 IP 地址访问 Google API 和服务 Google Cloud。如果您的共享 VPC 配置使用 VPC Service Controls,请改为通过 restricted.googleapis.com 路由流量。
如果您的共享 VPC 配置使用专用 IP 环境:
- (可选)配置与 Google API 和服务的连接。
- (可选)配置防火墙规则。
如果您的共享 VPC 配置使用 VPC Service Controls,请改用适用于具有 VPC Service Controls 的环境的说明:
总结
您已完成服务项目和宿主项目的共享 VPC 网络配置。
现在,您可以在服务项目中创建使用宿主项目的 VPC 网络的新环境。
后续步骤
- 创建 Managed Airflow 环境,并以配置参数的形式提供宿主项目的网络和子网。