Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍如何配置资源位置限制,以确保 Cloud Composer 存储的数据保留在您指定的位置。
位置限制的工作原理
Cloud Composer 的位置限制根据应用于创建 Cloud Composer 环境的项目的组织政策来确定。此政策在项目内部分配或从组织继承。
启用位置限制后,无法在该政策禁止的区域创建环境。如果某个区域列在拒绝列表中或未列在“允许”列表中,则您无法在此区域中创建环境。
如需创建环境,该政策必须允许整个区域,而不是该区域中的某个特定地区。例如,该政策必须允许 europe-west3
区域,以便在其中创建 Cloud Composer 环境。
Cloud Composer 会在以下位置检查位置限制:
- 环境创建。
- 如果操作期间创建了任何其他资源,则环境升级。
- 环境更新(适用于未对 Cloud Composer 依赖项强制执行位置限制的旧环境)。
除了检查位置限制之外,Cloud Composer 还会执行以下操作:
- 在区域 Artifact Registry 代码库中存储用户自定义的 Airflow 映像。
- 如果政策明确禁止
US
多区域,则 Cloud Build 的使用会被停用。在这种情况下,用户自定义的 Airflow 映像是在 GKE 集群中构建的。
在资源位置限制下将 Python 依赖项安装到专用 IP 环境中
如果您为项目设置了资源位置限制,则不能将 Cloud Build 用于安装软件包。因此会停用直接通过公共互联网访问代码库。
如需在位置限制不允许 US
多区域时在专用 IP 环境中安装 Python 依赖项,请使用以下选项之一:
使用 代理服务器 连接到公共网络上的 PyPI 代码库 。在 Cloud Storage 存储桶的
/config/pip/pip.conf
文件中指定代理地址。如果您的安全政策允许通过外部 IP 地址访问您的 VPC 网络,您可以配置 Cloud NAT。
将 Python 依赖项存储在 Cloud Storage 存储桶中的
dags
文件夹中,以将 Python 依赖项安装为本地库。如果依赖项树很大,这可能不是一个好的选择。
限制 Cloud Composer 日志的位置
如果您的 Cloud Composer 日志包含敏感数据,您可能需要将 Cloud Composer 日志重定向到区域 Cloud Storage 存储桶。为此,请使用日志接收器。将日志重定向到 Cloud Storage 存储桶后,您的日志不会发送到 Cloud Logging。
gcloud
创建新的 Cloud Storage 存储桶。
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
您需要将其中的:
LOCATION
替换为环境所在的区域。BUCKET_NAME
替换为存储桶的名称。例如composer-logs-us-central1-example-environment
。
创建新的日志接收器。
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"
替换:
ENVIRONMENT_NAME
替换为环境的名称。BUCKET_NAME
替换为存储桶的名称。LOCATION
替换为环境所在的区域。
上一个命令的输出中包含服务账号编号。向此服务账号授予 Storage Object Creator 角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \ --role='roles/storage.objectCreator' \ --condition=None
替换:
- 将
PROJECT_ID
替换为项目 ID。 - 将
SA_NUMBER
替换为在上一步中通过gcloud logging sinks create
命令提供的服务账号编号。
- 将
从 Monitoring 中排除环境的日志。
gcloud logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\ "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"
替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。