创建 Cloud Composer 环境 (original) (raw)
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.5-build.6 \
--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.5-build.6"
},
"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.5-build.6"
}
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 中使用可延期运算符。
在 Cloud Composer 3 中,Airflow 触发器默认处于启用状态。如果您想创建不含触发器的环境,请将触发器数量设置为零。 - Airflow DAG 处理器。处理 DAG 文件并将其转换为 DAG 对象。在 Cloud Composer 3 中,该调度程序的此部分会作为单独的环境组件运行。
- Airflow 网络服务器。运行 Airflow 网页界面,您可在此界面中监控、管理和直观呈现 DAG。
- Airflow 工作器。执行由 Airflow 调度器执行的任务。环境中的工作器数量下限和上限会动态变化,具体取决于队列中的任务数量。
- Airflow 调度器。解析 DAG 文件,根据时间表间隔安排 DAG 运行,并将任务排队以待 Airflow 工作器执行。
控制台
您可以为环境选择预设。选择预设时,系统会自动选择该预设的扩缩和性能参数。您还可以选择自定义预设,并指定环境的所有扩缩和性能参数。
如需为您的环境选择容量和性能配置,请在创建环境页面上执行以下操作:
- 如需使用预定义的值,请在环境资源部分中点击小、中或大。
- 要为规模和性能参数指定自定义值,请执行以下操作:
- 在环境资源部分中,点击自定义。
- 在调度器部分中,设置要使用的调度器数量,以及其 CPU、内存和存储空间的资源分配。
- 在触发器部分,使用触发器数量字段输入环境中的触发器数量。
如果您不想在 DAG 中使用可延期运算符,请将触发器数量设置为零。
如果您为环境设置了至少一个触发器,请使用 CPU 和 Memory 字段为触发器配置资源分配。 - 在 DAG 处理器部分中,指定环境中的 DAG 处理器数量以及每个 DAG 处理器的 CPU、内存和存储空间量。
- 在网络服务器部分中,指定 Web 服务器的 CPU、内存和存储空间量。
- 在工作器部分中,指定以下内容:
- 您环境中自动扩缩限制的工作器数量下限和上限。
- 工作器的 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.5-build.6 \
--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.5-build.6 \
--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.5-build.6 \
--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.5-build.6 \
--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.5-build.6 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
您需要进行如下替换:
- 将
NETWORK_ID
替换为您的 VPC 网络 ID。 - 将
SUBNETWORK_ID
替换为您的 VPC 子网 ID。
网络标记会应用于环境集群中的所有节点虚拟机。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须符合 RFC 1035 格式。
例如,如果您打算使用防火墙规则限制专用 IP 环境的流量,则可能需要添加网络标记。
控制台
在创建环境页面中执行以下操作:
- 找到网络配置部分。
- 在网络标记字段中,输入您的环境的网络标记。
gcloud
创建环境时,以下参数可用于控制网络标记:
--tags
指定应用于所有节点虚拟机的网络标记的逗号分隔列表。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.6 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
您需要进行如下替换:
- 将
TAGS
替换为以逗号分隔的网络标记列表。
示例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.5-build.6 \
--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 Web 服务器的权限,请选择允许从所有 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.5-build.6 \
--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.5-build.6 \
--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 资源中,指定 Web 服务器访问参数。
- 如需提供从所有 IP 地址访问 Airflow Web 服务器的权限,请省略
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.5-build.6 \
--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.5-build.6 \
--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。
如需为您的环境指定自定义维护窗口,请执行以下操作:
控制台
在创建环境页面上
- 找到维护期部分。
- 在时区下拉列表中,选择维护窗口的时区。
- 设置开始时间、天数和长度,以便:
- 每周至少分配 12 小时的时间。
- 您可以使用多个时间段,但每个时间段的持续时间必须至少为 4 小时。
例如,每个星期一、星期三和星期五的 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.5-build.6 \
--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.5-build.6 \
--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 Universal Catalog 的一项功能,可让您跟踪数据的移动情况。
所有版本的 Cloud Composer 3 都支持数据沿袭集成。
如果满足以下条件,系统会在新的 Cloud Composer 环境中自动启用数据沿袭集成:
- 您的项目已启用 Data Lineage API。如需了解详情,请参阅 Dataplex Universal Catalog 文档中的启用 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.5-build.6 \
--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.5-build.6 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--disable-cloud-data-lineage-integration
步骤 11.(可选)配置数据加密 (CMEK)
默认情况下,环境中的数据使用 Google 提供的密钥进行加密。
如需使用客户管理的加密密钥 (CMEK) 来加密您环境中的数据,请按照使用客户管理的加密密钥中的说明操作。
步骤 12.(可选)使用自定义环境的存储桶
当您创建环境时,Cloud Composer 会自动为您的环境创建一个存储桶。
或者,您也可以指定项目中的自定义 Cloud Storage 存储桶。您的环境使用此存储桶的方式与自动创建的存储桶相同。
如需使用自定义环境存储桶,请按照使用自定义环境的存储桶中所述的说明操作。
第 13 步:(可选)配置数据库保留期限
如果您在环境中启用数据库保留功能,Cloud Composer 会定期从 Airflow 数据库中移除与 DAG 执行和用户会话相关且早于指定时间段的记录。系统始终会保留最新的 DAG 运行信息。
默认情况下,数据库保留功能处于启用状态。如需为新环境配置保留期限或停用数据库保留功能,请按照配置数据库保留政策中所述的说明操作。您也可以稍后配置数据库保留期限。
第 14 步:(可选)指定环境标签
您可以为环境分配标签,以根据标签细分结算费用。
控制台
在创建环境页面的标签部分中,执行以下操作:
- 点击添加标签。
- 在键和值字段中,指定环境标签的键值对。
gcloud
当您创建环境时,--labels
参数会指定键和值的逗号分隔列表以及环境标签。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.6 \
--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.5-build.6 \
--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"
}
}