Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本页面介绍了如何创建 Cloud Composer 环境。
- 如需详细了解环境,请参阅环境架构。
- 如需详细了解如何使用 Terraform 创建环境,请参阅创建环境 (Terraform)。
准备工作
启用 Cloud Composer API。如需查看 Cloud Composer 使用的服务的完整列表,请参阅 Cloud Composer 所需的服务。
创建环境所需的大致时间为 25 分钟。
如果您使用 Terraform 创建环境,则 Terraform 使用的服务账号必须具有启用了
composer.environments.create
权限的角色。如需详细了解 Terraform 的服务账号,请参阅 Google 提供方配置参考文档。
如需详细了解如何使用 Terraform 创建 Cloud Composer 环境,请参阅 Terraform 文档。
如需详细了解其他参数,请参阅 Terraform 参数参考。
VPC SC:如需在安全边界内部署 Cloud Composer 环境,请参阅配置 VPC SC。与 Cloud Composer 搭配使用时,VPC Service Controls 有多项已知限制。
第 1 步:创建或选择环境的服务账号
创建环境时,您需要指定服务账号。此服务账号称为“环境的服务账号”。您的环境会使用此服务账号执行大多数操作。
您的环境的服务账号不是用户账号。服务账号是由应用或虚拟机 (VM) 实例(而非单个用户)使用的特殊账号。
您以后无法更改环境的服务账号。
如果您的项目中尚无 Cloud Composer 环境的服务账号,请创建一个。
如需查看在 Terraform 中为环境创建服务账号的扩展示例,请参阅创建环境 (Terraform)。
如需为您的环境创建新的服务账号,请执行以下操作:
按照 Identity and Access Management 文档中的说明创建新的服务账号。
向该服务授予角色,如 Identity and Access Management 文档中所述。所需角色为 Composer Worker (
composer.worker
)。如需访问 Google Cloud 项目中的其他资源,请向此服务账号授予访问这些资源的额外权限。在大多数情况下,Composer Worker (
composer.worker
) 角色可提供这组必需的权限。仅当 DAG 的运行需要时,才向此服务账号添加额外权限。
第 2 步:基本设置
此步骤会在指定位置创建一个使用默认参数的 Cloud Composer 环境。
控制台
在 Google Cloud 控制台中,前往创建环境页面。
在名称字段中,为环境输入名称。
该名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。该环境名称用于创建环境的子组件,因此您必须提供一个有效的 Cloud Storage 存储桶名称。如需查看限制列表,请参阅存储桶命名准则。
在位置下拉列表中,为您的环境选择一个位置。
位置是指环境所在的区域。
在映像版本下拉列表中,选择所需 Airflow 版本的 Cloud Composer 映像。
在服务账号下拉列表中,为您的环境选择一个服务账号。
如果您还没有为环境创建服务账号,请参阅创建或选择环境的服务账号。
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
您需要进行如下替换:
ENVIRONMENT_NAME
替换为环境的名称。该名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。该环境名称用于创建环境的子组件,因此您必须提供一个有效的 Cloud Storage 存储桶名称。如需查看限制列表,请参阅存储桶命名准则。
LOCATION
替换为环境的区域。位置是指环境所在的区域。
将
SERVICE_ACCOUNT
替换为您的环境的服务账号。将
IMAGE_VERSION
替换为 Cloud Composer 映像的名称。
示例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
API
构建 environments.create
API 请求。在 Environment
资源中指定配置。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
您需要进行如下替换:
将
PROJECT_ID
替换为项目 ID。LOCATION
替换为环境的区域。位置是指环境所在的区域。
将
ENVIRONMENT_NAME
替换为环境名称。该名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。该环境名称用于创建环境的子组件,因此您必须提供一个有效的 Cloud Storage 存储桶名称。如需查看限制列表,请参阅存储桶命名准则。
将
IMAGE_VERSION
替换为 Cloud Composer 映像的名称。将
SERVICE_ACCOUNT
替换为您的环境的服务账号。
例如:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"imageVersion": "composer-3-airflow-2.10.2-build.7"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
要使用默认参数创建指定位置的环境,请将以下资源块添加到您的 Terraform 配置并运行 terraform apply
。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "IMAGE_VERSION"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
您需要进行如下替换:
ENVIRONMENT_NAME
替换为环境的名称。该名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。该环境名称用于创建环境的子组件,因此您必须提供一个有效的 Cloud Storage 存储桶名称。如需查看限制列表,请参阅存储桶命名准则。
LOCATION
替换为环境的区域。位置是指环境所在的区域。
将
IMAGE_VERSION
替换为 Cloud Composer 映像的名称。将
SERVICE_ACCOUNT
替换为您的环境的服务账号。
例如:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-3-airflow-2.10.2-build.7"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
第 3 步:(可选)配置环境规模和性能参数
如需为您的环境指定扩缩和性能配置,请选择环境大小和工作负载配置。
您可以在创建环境后更改所有性能和扩缩参数。
以下参数可控制规模和性能:
环境大小。控制包含 Airflow 数据库的代管式 Cloud Composer 基础架构的性能参数。如果您希望运行大量 DAG 和任务并提高基础架构性能,请考虑选择较大的环境大小。例如,环境的大小越大,环境可以以最小的延迟处理的 Airflow 任务日志条目就越多。
工作负载配置。控制在环境的 GKE 集群中运行的 Airflow 组件的规模和性能。
Airflow 调度器。解析 DAG 文件,根据时间表间隔安排 DAG 运行,并将任务排队以待 Airflow 工作器执行。
您的环境可以同时运行多个 Airflow 调度器。使用多个调度器在多个调度器实例之间分配负载,以实现更好的性能和可靠性。
增加调度器的数量并不总是可以提高 Airflow 性能。例如,仅使用一个调度器的性能可能优于使用两个调度器。如果额外的调度器未得到利用,则可能会发生这种情况,因而会占用环境的资源,而不会提升整体性能。实际的调度器性能取决于 Airflow 工作器的数量、在您的环境中运行的 DAG 和任务的数量,以及 Airflow 和环境的配置。
我们建议您先使用两个调度器,然后再监控环境的性能。如果您更改调度器的数量,则可以随时将环境扩缩回原始调度器的数量。
如需详细了解如何配置多个调度器,请参阅 Airflow 文档。
Airflow 触发器。异步监控环境中的所有推迟任务。如果您的环境中至少有一个触发器实例(在高度弹性环境中至少有两个),则可以在 DAG 中使用可延期运算符。
Airflow DAG 处理器。处理 DAG 文件并将其转换为 DAG 对象。在 Cloud Composer 3 中,该调度程序的这一部分会作为单独的环境组件运行。
Airflow 网络服务器。运行 Airflow 网页界面,您可在此界面中监控、管理和直观呈现 DAG。
Airflow 工作器。执行由 Airflow 调度器执行的任务。环境中的工作器数量下限和上限会动态变化,具体取决于队列中的任务数量。
控制台
您可以为环境选择预设。选择预设时,系统会自动选择该预设的扩缩和性能参数。您还可以选择自定义预设,并指定环境的所有扩缩和性能参数。
如需为您的环境选择容量和性能配置,请在创建环境页面上执行以下操作:
如需使用预定义的值,请在环境资源部分中点击小、中或大。
要为规模和性能参数指定自定义值,请执行以下操作:
在环境资源部分中,点击自定义。
在调度器部分中,设置要使用的调度器数量,以及其 CPU、内存和存储空间的资源分配。
在触发器部分,使用触发器数量字段输入环境中的触发器数量。如果您不想在 DAG 中使用可延期运算符,可以将此数字设为 0。
如果您为环境设置了至少一个触发器,请使用 CPU 和 Memory 字段为触发器配置资源分配。
在 DAG 处理器部分中,指定环境中的 DAG 处理器数量,以及每个 DAG 处理器的 CPU、内存和存储空间量。
在网络服务器部分中,指定 Web 服务器的 CPU、内存和存储空间量。
在Worker 部分中,指定以下内容:
- 您环境中自动扩缩限制的工作器数量下限和上限。
- 工作器的 CPU、内存和存储空间分配
在核心基础架构部分的环境大小下拉列表中,选择环境大小。
gcloud
创建环境时,以下参数可用于控制环境的规模和性能参数。
--environment-size
用于指定环境大小。--scheduler-count
用于指定调度器的数量。--scheduler-cpu
用于指定 Airflow 调度器的 CPU 数量。--scheduler-memory
用于指定 Airflow 调度器的内存量。--scheduler-storage
用于指定 Airflow 调度器的磁盘空间。--triggerer-count
用于指定环境中的 Airflow 触发器数量。此标志的默认值为0
。如果您想在 DAG 中使用可延期运算符,则需要触发器。- 对于标准弹性环境,请使用介于
0
和10
之间的值。 - 对于高度弹性环境,请使用
0
或介于2
和10
之间的值。
- 对于标准弹性环境,请使用介于
--triggerer-cpu
用于指定 Airflow 触发器的 CPU 数量(以 vCPU 为单位)。允许使用的值有:0.5
、0.75
、1
。默认值为0.5
。--triggerer-memory
用于指定 Airflow 触发器的内存量(以 GB 为单位)。默认值为0.5
。所需的最小内存等于为触发器分配的 CPU 数量。允许的最大值等于触发器 CPU 数量乘以 6.5。
例如,如果您将
--triggerer-cpu
标志设置为1
,则--triggerer-memory
的下限为1
,上限为6.5
。--dag-processor-cpu
用于指定 DAG 处理器的 CPU 数量。--dag-processor-memory
用于指定 DAG 处理器的内存量。--dag-processor-storage
用于指定 DAG 处理器的磁盘空间量。--web-server-cpu
用于指定 Airflow Web 服务器的 CPU 数量。--web-server-memory
用于指定 Airflow Web 服务器的内存量。--web-server-storage
用于指定 Airflow 网络服务器的磁盘空间。--worker-cpu
用于指定 Airflow 工作器的 CPU 数量。--worker-memory
用于指定 Airflow 工作器的内存量。--worker-storage
用于指定 Airflow 工作器的磁盘空间。--min-workers
用于指定 Airflow 工作器数量下限。您的环境的集群至少运行此数量的工作器。--max-workers
用于指定 Airflow 工作器数量上限。您的环境的集群最多运行此数量的工作器。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--environment-size ENVIRONMENT_SIZE \
--scheduler-count SCHEDULER_COUNT \
--scheduler-cpu SCHEDULER_CPU \
--scheduler-memory SCHEDULER_MEMORY \
--scheduler-storage SCHEDULER_STORAGE \
--triggerer-count TRIGGERER_COUNT \
--triggerer-cpu TRIGGERER_CPU \
--triggerer-memory TRIGGERER_MEMORY \
--dag-processor-cpu DAG_PROCESSOR_CPU \
--dag-processor-memory DAG_PROCESSOR_MEMORY \
--dag-processor-storage DAG_PROCESSOR_STORAGE \
--web-server-cpu WEB_SERVER_CPU \
--web-server-memory WEB_SERVER_MEMORY \
--web-server-storage WEB_SERVER_STORAGE \
--worker-cpu WORKER_CPU \
--worker-memory WORKER_MEMORY \
--worker-storage WORKER_STORAGE \
--min-workers WORKERS_MIN \
--max-workers WORKERS_MAX
替换:
- 将
ENVIRONMENT_SIZE
替换为small
、medium
或large
。 SCHEDULER_COUNT
替换为调度器的数量。- 将
SCHEDULER_CPU
替换为调度器的 CPU 数量(以 vCPU 为单位)。 - 将
SCHEDULER_MEMORY
替换为调度器的内存量。 - 将
SCHEDULER_STORAGE
替换为调度器的磁盘大小。 - 将
TRIGGERER_COUNT
替换为触发器数量。 - 将
TRIGGERER_CPU
替换为触发器的 CPU 数量(以 vCPU 为单位)。 将
TRIGGERER_MEMORY
替换为触发器的内存量(以 GB 为单位)。将
DAG_PROCESSOR_CPU
替换为 DAG 处理器的 CPU 数量。将
DAG_PROCESSOR_MEMORY
替换为 DAG 处理器的内存量。将
DAG_PROCESSOR_STORAGE
替换为 DAG 处理器的磁盘空间量。将
WEB_SERVER_CPU
替换为网络服务器的 CPU 数量(以 vCPU 为单位)。将
WEB_SERVER_MEMORY
替换为网络服务器的内存量。将
WEB_SERVER_STORAGE
替换为网络服务器的内存量。将
WORKER_CPU
替换为工作器的 CPU 数量(以 vCPU 为单位)。将
WORKER_MEMORY
替换为工作器的内存量。将
WORKER_STORAGE
替换为工作器的磁盘大小。将
WORKERS_MIN
替换为您的环境可运行的 Airflow 工作器数量的下限。您的环境中的工作器数量不能低于此数量,即使更少数量的工作器可以处理负载也是如此。将
WORKERS_MAX
替换为您的环境可运行的 Airflow 工作器数量的上限。您的环境中的工作器数量不能超出此数量,即使需要更多数量的工作器来处理负载也是如此。
例如:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--environment-size small \
--scheduler-count 1 \
--scheduler-cpu 0.5 \
--scheduler-memory 2.5GB \
--scheduler-storage 2GB \
--triggerer-count 1 \
--triggerer-cpu 0.5 \
--triggerer-memory 0.5GB \
--dag-processor-cpu 0.5 \
--dag-processor-memory 2GB \
--dag-processor-storage 1GB \
--web-server-cpu 1 \
--web-server-memory 2.5GB \
--web-server-storage 2GB \
--worker-cpu 1 \
--worker-memory 2GB \
--worker-storage 2GB \
--min-workers 2 \
--max-workers 4
API
创建环境时,请在 Environment > EnvironmentConfig > WorkloadsConfig 资源中,指定环境规模和性能参数。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"workloadsConfig": {
"scheduler": {
"cpu": SCHEDULER_CPU,
"memoryGb": SCHEDULER_MEMORY,
"storageGb": SCHEDULER_STORAGE,
"count": SCHEDULER_COUNT
},
"triggerer": {
"count": TRIGGERER_COUNT,
"cpu": TRIGGERER_CPU,
"memoryGb": TRIGGERER_MEMORY
},
"dagProcessor": {
"count": 1,
"cpu": DAG_PROCESSOR_CPU,
"memoryGb": DAG_PROCESSOR_MEMORY,
"storageGb": DAG_PROCESSOR_STORAGE
},
"webServer": {
"cpu": WEB_SERVER_CPU,
"memoryGb": WEB_SERVER_MEMORY,
"storageGb": WEB_SERVER_STORAGE
},
"worker": {
"cpu": WORKER_CPU,
"memoryGb": WORKER_MEMORY,
"storageGb": WORKER_STORAGE,
"minCount": WORKERS_MIN,
"maxCount": WORKERS_MAX
}
},
"environmentSize": "ENVIRONMENT_SIZE",
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
SCHEDULER_CPU
替换为调度器的 CPU 数量(以 vCPU 为单位)。 - 将
SCHEDULER_MEMORY
替换为调度器的内存量(以 GB 为单位)。 - 将
SCHEDULER_STORAGE
替换为调度器的磁盘大小(以 GB 为单位)。 SCHEDULER_COUNT
替换为调度器的数量。将
TRIGGERER_COUNT
替换为触发器数量。默认值为0
。 如果您想在 DAG 中使用可延期运算符,则需要触发器。- 对于标准弹性环境,请使用介于
0
和10
之间的值。 - 对于高度弹性环境,请使用
0
或介于2
和10
之间的值。
如果您使用至少一个触发器,则还必须指定
TRIGGERER_CPU
和TRIGGERER_MEMORY
参数:- 对于标准弹性环境,请使用介于
TRIGGERER_CPU
用于指定触发器的 CPU 数量(以 vCPU 为单位)。允许使用的值:0.5
、0.75
、1
。TRIGGERER_MEMORY
用于配置触发器的内存量。所需的最低内存等于为触发器分配的 CPU 数量。允许的最大值等于触发器 CPU 数量乘以 6.5。例如,如果您将
TRIGGERER_CPU
设置为1
,则TRIGGERER_MEMORY
的下限为1
,上限为6.5
。将
DAG_PROCESSOR_CPU
替换为 DAG 处理器的 CPU 数量(以 vCPU 为单位)。将
DAG_PROCESSOR_MEMORY
替换为 DAG 处理器的内存量(以 GB 为单位)。将
DAG_PROCESSOR_STORAGE
替换为 DAG 处理器的磁盘空间量(以 GB 为单位)。将
WEB_SERVER_CPU
替换为网络服务器的 CPU 数量(以 vCPU 为单位)。将
WEB_SERVER_MEMORY
替换为 Web 服务器的内存量(以 GB 为单位)。将
WEB_SERVER_STORAGE
替换为 Web 服务器的磁盘大小(以 GB 为单位)。将
WORKER_CPU
替换为工作器的 CPU 数量(以 vCPU 为单位)。将
WORKER_MEMORY
替换为工作器的内存量(以 GB 为单位)。将
WORKER_STORAGE
替换为工作器的磁盘大小(以 GB 为单位)。将
WORKERS_MIN
替换为您的环境可运行的 Airflow 工作器数量的下限。您的环境中的工作器数量不能低于此数量,即使更少数量的工作器可以处理负载也是如此。将
WORKERS_MAX
替换为您的环境可运行的 Airflow 工作器数量的上限。您的环境中的工作器数量不能超出此数量,即使需要更多数量的工作器来处理负载也是如此。将
ENVIRONMENT_SIZE
替换为环境大小,ENVIRONMENT_SIZE_SMALL
、ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_SIZE_LARGE
。
例如:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"workloadsConfig": {
"scheduler": {
"cpu": 2.5,
"memoryGb": 2.5,
"storageGb": 2,
"count": 1
},
"triggerer": {
"cpu": 0.5,
"memoryGb": 0.5,
"count": 1
},
"dagProcessor": {
"count": 1,
"cpu": 0.5,
"memoryGb": 2,
"storageGb": 1
},
"webServer": {
"cpu": 1,
"memoryGb": 2.5,
"storageGb": 2
},
"worker": {
"cpu": 1,
"memoryGb": 2,
"storageGb": 2,
"minCount": 2,
"maxCount": 4
}
},
"environmentSize": "ENVIRONMENT_SIZE_SMALL",
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
创建环境时,您可以通过以下参数控制环境的规模和性能参数。
在
config
块中:environment_size
字段用于控制环境大小。
在
workloads_config
块中:scheduler.cpu
字段用于指定 Airflow 调度器的 CPU 数量。scheduler.memory_gb
字段用于指定 Airflow 调度器的内存量。scheduler.storage_gb
字段用于指定调度器的磁盘空间。scheduler.count
字段指定您环境中的调度器数量。triggerer.cpu
字段用于指定 Airflow 触发器的 CPU 数量。triggerer.memory_gb
字段用于指定 Airflow 触发器的内存量。triggerer.count
字段用于指定环境中的触发器数量。dag_processor.cpu
字段用于指定 DAG 处理器的 CPU 数量。dag_processor.memory_gb
字段用于指定 DAG 处理器的内存量。dag_processor.storage_gb
字段用于指定 DAG 处理器的磁盘空间量。dag_processor.count
字段用于指定 DAG 处理器的数量。web_server.cpu
字段用于指定 Airflow Web 服务器的 CPU 数量。web_server.memory_gb
字段用于指定 Airflow Web 服务器的内存量。web_server.storage_gb
字段用于指定 Airflow Web 服务器的磁盘空间。worker.cpu
字段用于指定 Airflow 工作器的 CPU 数量。worker.memory_gb
字段用于指定 Airflow 工作器的内存量。worker.storage_gb
用于指定 Airflow 工作器的磁盘空间量。worker.min_count
字段用于指定环境中的工作器数量下限。worker.max_count
字段用于指定环境中的工作器数量上限。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
workloads_config {
scheduler {
cpu = SCHEDULER_CPU
memory_gb = SCHEDULER_MEMORY
storage_gb = SCHEDULER_STORAGE
count = SCHEDULER_COUNT
}
triggerer {
count = TRIGGERER_COUNT
cpu = TRIGGERER_CPU
memory_gb = TRIGGERER_MEMORY
}
web_server {
cpu = WEB_SERVER_CPU
memory_gb = WEB_SERVER_MEMORY
storage_gb = WEB_SERVER_STORAGE
}
worker {
cpu = WORKER_CPU
memory_gb = WORKER_MEMORY
storage_gb = WORKER_STORAGE
min_count = WORKERS_MIN
max_count = WORKERS_MAX
}
}
environment_size = "ENVIRONMENT_SIZE"
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- 将
SERVICE_ACCOUNT
替换为您的环境的服务账号。 - 将
SCHEDULER_CPU
替换为调度器的 CPU 数量(以 vCPU 为单位)。 - 将
SCHEDULER_MEMORY
替换为调度器的内存量(以 GB 为单位)。 - 将
SCHEDULER_STORAGE
替换为调度器的磁盘大小(以 GB 为单位)。 SCHEDULER_COUNT
替换为调度器的数量。- 将
TRIGGERER_COUNT
替换为触发器数量。 - 将
TRIGGERER_CPU
替换为触发器的 CPU 数量(以 vCPU 为单位)。 - 将
TRIGGERER_MEMORY
替换为触发器的内存量(以 GB 为单位)。 - 将
WEB_SERVER_CPU
替换为网络服务器的 CPU 数量(以 vCPU 为单位)。 - 将
WEB_SERVER_MEMORY
替换为 Web 服务器的内存量(以 GB 为单位)。 - 将
WEB_SERVER_STORAGE
替换为 Web 服务器的磁盘大小(以 GB 为单位)。 - 将
WORKER_CPU
替换为工作器的 CPU 数量(以 vCPU 为单位)。 - 将
WORKER_MEMORY
替换为工作器的内存量(以 GB 为单位)。 - 将
WORKER_STORAGE
替换为工作器的磁盘大小(以 GB 为单位)。 - 将
WORKERS_MIN
替换为您的环境可运行的 Airflow 工作器数量的下限。您的环境中的工作器数量不能低于此数量,即使更少数量的工作器可以处理负载也是如此。 - 将
WORKERS_MAX
替换为您的环境可运行的 Airflow 工作器数量的上限。您的环境中的工作器数量不能超出此数量,即使需要更多数量的工作器来处理负载也是如此。 - 将
ENVIRONMENT_SIZE
替换为环境大小,ENVIRONMENT_SIZE_SMALL
、ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_SIZE_LARGE
。
例如:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
workloads_config {
scheduler {
cpu = 2.5
memory_gb = 2.5
storage_gb = 2
count = 1
}
triggerer {
count = 1
cpu = 0.5
memory_gb = 0.5
}
web_server {
cpu = 1
memory_gb = 2.5
storage_gb = 2
}
worker {
cpu = 1
memory_gb = 2
storage_gb = 2
min_count = 2
max_count = 4
}
}
environment_size = "ENVIRONMENT_SIZE_SMALL"
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
第 4 步:(可选)为环境的数据库指定一个可用区
您可以为环境指定首选 Cloud SQL 可用区。
控制台
在创建环境页面中执行以下操作:
在高级配置部分中,展开显示高级配置项。
在 Airflow 数据库可用区列表中,选择首选的 Cloud SQL 可用区。
gcloud
创建环境时,--cloud-sql-preferred-zone
参数会指定首选的 Cloud SQL 可用区。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--cloud-sql-preferred-zone SQL_ZONE
替换以下内容:
SQL_ZONE
:首选 Cloud SQL 区域。此可用区必须位于环境所在的区域。
示例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--cloud-sql-preferred-zone us-central1-a
API
创建环境时,请在 Environment > DatabaseConfig 资源中,指定首选 Cloud SQL 区域。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"databaseConfig": {
"zone": "SQL_ZONE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
替换以下内容:
SQL_ZONE
:首选 Cloud SQL 区域。此可用区必须位于环境所在的区域。
示例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"databaseConfig": {
"zone": "us-central1-a"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
创建环境时,database_config
块中的 zone
字段会指定首选 Cloud SQL 区域。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
database_config {
zone = "SQL_ZONE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
替换以下内容:
SQL_ZONE
:首选 Cloud SQL 区域。此可用区必须位于环境所在的区域。
第 5 步:(可选)配置环境的网络
您可以通过以下方式配置 Cloud Composer 3 网络:
- 在公共 IP 环境中,环境的 Airflow 组件可以访问互联网。
- 在专用 IP 环境中,环境的 Airflow 组件无法访问互联网。
- 专用 IP 环境和公共 IP 环境可以作为单独的选项连接到您的 VPC 网络。
- 您可以指定环境的内部 IP 地址范围。此范围日后无法更改。
您可以在安装 PyPI 软件包时启用对互联网的访问权限。例如,如果您启用此选项,专用 IP 环境仍可从 Python 软件包索引安装 PyPI 软件包。
对于共享 VPC 环境,您必须为宿主项目进行额外的网络设置,然后在服务项目中创建公共或专用 IP 环境。按照配置共享 VPC 页面上的说明进行操作。
控制台
确保已针对您要创建的环境类型配置网络。
在网络配置部分中,展开显示网络配置项。
如果您想将环境连接到 VPC 网络,请在网络附件字段中选择一个网络附件。您还可以创建新的网络连接。如需了解详情,请参阅将环境连接到 VPC 网络。
如果您想创建专用 IP 环境,请在网络类型部分中选择专用 IP 环境选项。
如果您想添加网络标记,请参阅添加网络标记了解详情。
gcloud
确保已针对您要创建的环境类型配置网络。
创建环境时,以下参数可控制网络参数。如果您省略参数,则系统会使用默认值。
--enable-private-environment
用于启用专用 IP 环境。--network
用于指定您的 VPC 网络 ID。--subnetwork
用于指定您的 VPC 子网 ID。
--composer-internal-ipv4-cidr-block
用于指定环境的内部 IP 地址范围。Cloud Composer 会在您环境的租户项目中使用此范围。
示例(具有已连接 VPC 网络的专用 IP 环境)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
您需要进行如下替换:
- 将
NETWORK_ID
替换为您的 VPC 网络 ID。 将
SUBNETWORK_ID
替换为您的 VPC 子网 ID。
第 6 步:(可选)添加广告联盟代码
网络标记会应用于环境集群中的所有节点虚拟机。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须符合 RFC 1035 格式。
例如,如果您打算使用防火墙规则限制专用 IP 环境的流量,则可能需要添加网络标记。
控制台
在创建环境页面中执行以下操作:
- 找到网络配置部分。
- 在网络标记字段中,输入您的环境的网络标记。
gcloud
创建环境时,以下参数可用于控制网络标记:
--tags
指定应用于所有节点虚拟机的网络标记的逗号分隔列表。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
您需要进行如下替换:
- 将
TAGS
替换为以逗号分隔的网络标记列表。
示例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--tags group1,production
API
创建环境时,请在环境 > EnvironmentConfig 资源中为您的环境指定网络标记。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
您需要进行如下替换:
TAG
带有网络标记。
示例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"tags": [
"group1",
"production"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
创建环境时,以下字段可用于为环境定义网络标记:
node_config
块中的tags
字段指定应用于所有节点虚拟机的网络标记的逗号分隔列表。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
您需要进行如下替换:
- 将
TAGS
替换为以逗号分隔的网络标记列表。
示例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
tags = ["group1","production"]
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
第 7 步:(可选)配置网络服务器网络访问权限
Airflow 网络服务器访问参数不取决于您的环境类型。您可以改为单独配置网络服务器访问权限。例如,专用 IP 环境仍然可以通过互联网访问 Airflow 界面。
您无法使用专用 IP 地址配置允许的 IP 范围。
控制台
在创建环境页面中执行以下操作:
在网络配置部分中,展开显示网络配置项。
在网络服务器网络访问权限控制部分:
如需提供从所有 IP 地址访问 Airflow 网络服务器的权限,请选择允许从所有 IP 地址访问。
如需只允许来自特定 IP 地址范围的访问,请选择仅允许来自特定 IP 地址的访问。在 IP 范围字段中,以 CIDR 表示法指定 IP 范围。在说明字段中,指定此范围的可选说明。如果您想指定多个范围,请点击添加 IP 范围。
如需禁止从所有 IP 地址访问,请选择仅允许从特定 IP 地址访问,然后点击空范围条目旁边的删除项。
gcloud
创建环境时,以下参数可控制网络服务器访问权限级别:
--web-server-allow-all
提供从所有 IP 地址访问 Airflow 的权限。这是默认选项。--web-server-allow-ip
仅允许来自特定来源 IP 地址范围的访问。如需指定多个 IP 范围,请多次使用此参数。--web-server-deny-all
禁止从所有 IP 地址访问。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
替换:
- 将
WS_IP_RANGE
替换为可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。 - 将
WS_RANGE_DESCRIPTION
替换为 IP 地址范围的说明。
例如:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
创建环境时,在环境 > EnvironmentConfig 资源中,指定网络服务器访问参数。
如需提供从所有 IP 地址访问 Airflow 网络服务器的权限,请省略
webServerNetworkAccessControl
。如需只允许从特定 IP 地址范围访问,请在
allowedIpRanges
中指定一个或多个范围。如需禁止从所有 IP 地址访问,请添加
allowedIpRanges
列表并将其留空。请勿在其中指定 IP 范围。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
WS_IP_RANGE
替换为可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。 - 将
WS_RANGE_DESCRIPTION
替换为 IP 地址范围的说明。
例如:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "office net 1"
},
{
"value": "192.0.4.0/24",
"description": "office net 3"
}
]
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
创建环境时,web_server_network_access_control
块中的 allowed_ip_range
块包含可以访问网络服务器的 IP 地址范围。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
WS_IP_RANGE
替换为可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。 - 将
WS_RANGE_DESCRIPTION
替换为 IP 地址范围的说明。
示例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
第 8 步:(可选)指定 Airflow 配置替换和环境变量
您可以在创建环境时设置 Airflow 配置替换和环境变量。或者,您可以在创建环境后执行此操作。
某些 Airflow 配置选项被屏蔽,您无法替换这些选项。
如需查看可用的 Airflow 配置选项列表,请参阅 Airflow 2 的配置参考和 Airflow 1.10.*
如需指定 Airflow 配置替换和环境变量,请执行以下操作:
控制台
在创建环境页面中执行以下操作:
在环境变量部分中,点击添加环境变量。
输入环境变量的名称和值。
在 Airflow 配置替换部分中,点击添加 Airflow 配置替换。
输入配置选项替换值的部分、键和值。
例如:
节 键 值 webserver
dag_orientation
TB
gcloud
创建环境时,以下参数可用于控制环境变量和 Airflow 配置替换:
--env-variables
用于指定环境变量的英文逗号分隔列表。变量名称可以包含大写和小写字母、数字和下划线,但不能以数字开头。
--airflow-configs
用于指定 Airflow 配置替换的键和值的逗号分隔列表。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
替换:
- 将
ENV_VARS
替换为环境变量以逗号分隔的NAME=VALUE
对列表。 - 将
CONFIG_OVERRIDES
替换为配置替换以逗号分隔的SECTION-KEY=VALUE
对列表。用-
符号分隔配置部分的名称,后跟键名称。例如:core-dags_are_paused_at_creation
。
例如:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
--airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB
API
创建环境时,请在环境 > EnvironmentConfig 资源中,指定环境变量和 Airflow 配置替换。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"SECTION-KEY": "OVERRIDE_VALUE"
},
"envVariables": {
"VAR_NAME": "VAR_VALUE",
}
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
SECTION
替换为 Airflow 配置选项所在配置文件中的部分。 - 将
KEY
替换为 Airflow 配置选项的名称。 - 将
OVERRIDE_VALUE
替换为 Airflow 配置选项的值。 - 将
VAR_NAME
替换为环境变量的名称。 - 将
VAR_VALUE
替换为环境变量的值。
例如:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"core-dags_are_paused_at_creation": "True",
"webserver-dag_orientation": "TB"
},
"envVariables": {
"SENDGRID_MAIL_FROM": "user@example.com",
"SENDGRID_API_KEY": "example-key"
}
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
创建环境时,以下块可用于控制环境变量和 Airflow 配置替换:
software_config
块中的env_variables
块可用于指定环境变量。变量名称可以包含大写和小写字母、数字和下划线,但不能以数字开头。
software_config
块中的airflow_config_overrides
块指定 Airflow 配置替换。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
airflow_config_overrides = {
SECTION-KEY = "OVERRIDE_VALUE"
}
env_variables = {
VAR_NAME = "VAR_VALUE"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
SECTION
替换为 Airflow 配置选项所在配置文件中的部分。 - 将
KEY
替换为 Airflow 配置选项的名称。 - 将
OVERRIDE_VALUE
替换为 Airflow 配置选项的值。 - 将
VAR_NAME
替换为环境变量的名称。 - 将
VAR_VALUE
替换为环境变量的值。
示例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
airflow_config_overrides = {
core-dags_are_paused_at_creation = "True"
webserver-dag_orientation = "TB"
}
env_variables = {
SENDGRID_MAIL_FROM = "user@example.com"
SENDGRID_API_KEY = "example-key"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
第 9 步:(可选)指定维护窗口
Cloud Composer 3 中的默认维护窗口定义如下:
- 所有时间均以环境所在区域的本地时区为准,但会忽略夏令时。
- 周二、周三、周四和周五的维护窗口为 00:00:00 至 02:00:00。
- 周六、周日和周一的维护窗口为 00:00:00 到 04:00:00。
如需为您的环境指定自定义维护窗口,请执行以下操作:
控制台
在创建环境页面上
找到维护期部分。
在时区下拉列表中,选择维护窗口的时区。
设置开始时间、天数和长度,以便指定 7 天的滚动期内,时间表的总时间至少 12 小时。例如,每个星期一、星期三和星期五的 4 小时提供了所需的时间。
gcloud
以下参数定义了维护窗口参数:
--maintenance-window-start
设置自定义维护窗口的开始时间。--maintenance-window-end
设置维护窗口的结束时间。--maintenance-window-recurrence
设置维护窗口重复。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
替换:
- 将
ENVIRONMENT_NAME
替换为环境的名称。 - 将
DATETIME_START
替换为采用日期/时间输入格式的开始日期和时间。只有一天中所指定的时间,指定的日期会被忽略。 - 将
DATETIME_END
替换为采用日期/时间输入格式的结束日期和时间。只有一天中所指定的时间,指定的日期会被忽略。指定的日期和时间必须晚于开始日期。 将
MAINTENANCE_RECURRENCE
替换为用于恢复维护窗口的 RFC 5545 RRULE。Cloud Composer 支持两种格式:FREQ=DAILY
格式指定每日重复。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式指定在一周中的选定几天重复。
以下示例指定星期三、星期六和星期日世界协调时间 (UTC) 01:00 到 07:00 之间的 6 小时维护窗口。忽略 2023 年 1 月 1 日的日期。
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
创建环境时,请在环境 > EnvironmentConfig 资源中指定维护窗口参数:
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
DATETIME_START
替换为采用日期/时间输入格式的开始日期和时间。只有一天中所指定的时间,指定的日期会被忽略。 - 将
DATETIME_END
替换为采用日期/时间输入格式的结束日期和时间。只有一天中所指定的时间,指定的日期会被忽略。指定的日期和时间必须晚于开始日期。 将
MAINTENANCE_RECURRENCE
替换为用于恢复维护窗口的 RFC 5545 RRULE。Cloud Composer 支持两种格式:FREQ=DAILY
格式指定每日重复。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式指定在一周中的选定几天重复。
以下示例指定星期三、星期六和星期日世界协调时间 (UTC) 01:00 到 07:00 之间的 6 小时维护窗口。忽略 2023 年 1 月 1 日的日期。
示例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
maintenance_window
块为您的环境指定维护窗口:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
替换:
- 将
DATETIME_START
替换为采用日期/时间输入格式的开始日期和时间。只有一天中所指定的时间,指定的日期会被忽略。 - 将
DATETIME_END
替换为采用日期/时间输入格式的结束日期和时间。只有一天中所指定的时间,指定的日期会被忽略。指定的日期和时间必须晚于开始日期。 将
MAINTENANCE_RECURRENCE
替换为用于恢复维护窗口的 RFC 5545 RRULE。Cloud Composer 支持两种格式:FREQ=DAILY
格式指定每日重复。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式指定在一周中的选定几天重复。
以下示例指定星期三、星期六和星期日世界协调时间 (UTC) 01:00 到 07:00 之间的 6 小时维护窗口。忽略 2023 年 1 月 1 日的日期。
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
第 10 步:(可选)数据沿袭集成
数据沿袭是 Dataplex 的一项功能,可让您跟踪数据移动。
所有版本的 Cloud Composer 3 都支持数据沿袭集成。如果满足以下条件,系统会在新的 Cloud Composer 环境中自动启用数据沿袭集成:
您的项目已启用 Data Lineage API。如需了解详情,请参阅 Dataplex 文档中的启用 Data Lineage API。
未在 Airflow 中配置自定义谱系后端。
您可以在创建环境时停用数据源流水线集成。例如,如果您想在创建环境后替换自动行为或选择稍后启用数据传承。
控制台
如需停用数据沿袭集成,请在创建环境页面中执行以下操作:
在高级配置部分中,展开显示高级配置项。
在 Dataplex 数据沿袭集成部分中,选择停用与 Dataplex 数据沿袭的集成。
gcloud
创建环境时,--disable-cloud-data-lineage-integration
参数会停用数据传承集成。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--disable-cloud-data-lineage-integration
您需要进行如下替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。
示例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--disable-cloud-data-lineage-integration
步骤 11.(可选)配置数据加密 (CMEK)
默认情况下,环境中的数据使用 Google 提供的密钥进行加密。
如需使用客户管理的加密密钥 (CMEK) 来加密您环境中的数据,请按照使用客户管理的加密密钥中的说明操作。
步骤 12.(可选)使用自定义环境的存储分区
当您创建环境时,Cloud Composer 会自动为您的环境创建一个存储分区。
或者,您也可以指定项目中的自定义 Cloud Storage 存储分区。您的环境使用此存储分区的方式与自动创建的存储分区相同。
如需使用自定义环境存储分区,请按照使用自定义环境的存储分区中所述的说明操作。
第 13 步:(可选)指定环境标签
您可以为环境分配标签,以根据标签细分结算费用。
控制台
在创建环境页面的标签部分中,执行以下操作:
点击添加标签。
在键和值字段中,指定环境标签的键值对。
gcloud
当您创建环境时,--labels
参数会指定键和值的逗号分隔列表以及环境标签。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
替换:
- 将
LABELS
替换为环境标签的KEY=VALUE
对列表。
例如:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.2-build.7 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--labels owner=engineering-team,env=production
API
创建环境时,在环境资源中指定环境的标签。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"labels": {
"LABEL_KEY": "LABEL_VALUE"
}
}
替换:
- 将
LABEL_KEY
替换为环境标签的键。 - 将
LABEL_VALUE
替换为环境标签的值。
例如:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"labels": {
"owner": "engineering-team",
"env": "production"
}
}
Terraform
创建环境时,请在 labels
块(在 config
块外部)中指定标签。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
labels = {
LABEL_KEY = "LABEL_VALUE"
}
}
替换:
- 将
LABEL_KEY
替换为环境标签的键。 - 将
LABEL_VALUE
替换为环境标签的值。
例如:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
labels = {
owner = "engineering-team"
env = "production"
}
}