创建 Managed Service for Apache Airflow 环境

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页面介绍了如何创建 Managed Airflow 环境。

准备工作

  • 启用 Cloud Composer API。如需查看 Managed Airflow 使用的服务的完整列表,请参阅 Managed Airflow 所需的服务。

  • 创建环境所需的大致时间为 25 分钟。

  • 如果您使用 Terraform 创建环境,则 Terraform 使用的服务账号必须具有启用了 composer.environments.create 权限的角色。

    如需详细了解 Terraform 的服务账号,请参阅 Google 提供方配置参考文档。

    如需详细了解如何使用 Terraform 创建 Managed Airflow 环境,请参阅 Terraform 文档。

    如需详细了解其他参数,请参阅 Terraform 参数参考。

  • 专用 IP:如需创建专用 IP 环境,您需要遵循特定的网络和对等互连要求。如需了解详情,请参阅配置专用 IP 地址。

  • 共享 VPC:如需在 Managed Airflow 中使用共享 VPC,您需要遵循特定的网络要求。如需了解相关信息,请参阅配置共享 VPC。

  • VPC SC:如需在安全边界内部署 Managed Airflow 环境,请参阅配置 VPC SC。与 Managed Airflow 搭配使用时,VPC Service Controls 有多项已知限制。

第 1 步:创建或选择环境的服务账号

创建环境时,您需要指定服务账号。此服务账号称为“环境的服务账号”。您的环境使用此服务账号执行大部分操作。

您的环境的服务账号不是用户账号。服务账号是由应用或虚拟机 (VM) 实例(而非单个用户)使用的特殊账号。

您以后无法更改环境的服务账号。

如果您的项目中还没有适用于 Managed Airflow 环境的服务账号,请创建该账号。

如需查看有关在 Terraform 中为环境创建服务账号的扩展示例,请参阅创建环境 (Terraform)。

如需为您的环境创建新的服务账号,请执行以下操作:

  1. 按照 Identity and Access Management 文档中的说明创建新的服务账号。

  2. 如 Identity and Access Management 文档中所述,向其授予角色。所需的角色是 Composer Worker (composer.worker)。

  3. 如果您的环境使用资源位置限制,或者从 Artifact Registry 代码库或从私有代码库安装 PyPI 软件包,请向用户管理的服务账号授予服务账号用户 (iam.serviceAccountUser) 角色,该服务账号在自身上运行您的环境(委托人和资源是同一服务账号)。

  4. 如需访问 Google Cloud 项目中的其他资源,请向此服务账号授予访问这些资源的额外权限。 在大多数情况下,Composer Worker (composer.worker) 角色可提供所需的这组权限。仅当 DAG 的运行需要时,才向此服务账号添加额外权限。

第 2 步:基本设置

此步骤会在指定位置创建一个使用默认参数的 Managed Airflow 环境。

控制台

  1. 在 Google Cloud 控制台中,前往创建环境页面。

    转到“创建环境”

  2. 在名称字段中,为环境输入名称。

    该名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。该环境名称用于创建环境的子组件,因此您必须提供一个有效的 Cloud Storage 存储桶名称。如需查看限制列表,请参阅存储桶命名准则。

  3. 在位置下拉列表中,为您的环境选择一个位置。

    位置是指环境所在的区域。

  4. 在映像版本下拉列表中,选择所需 Airflow 版本的 Managed Airflow 映像。

  5. 在节点配置部分的服务账号下拉列表中,为您的环境选择服务账号。

    如果您还没有环境的服务账号,请参阅创建或选择环境的服务账号。

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 替换为 Managed Airflow 映像的名称。

示例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
"

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 替换为 Managed Airflow 映像的名称。

  • 将 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-1.20.12-airflow-1.10.15"
    },
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.
"
    }
  }
}

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 替换为 Managed Airflow 映像的名称。

  • 将 SERVICE_ACCOUNT 替换为您的环境的服务账号。

例如:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-1.20.12-airflow-1.10.15"
    }
    node_config {
      service_account = "
example-account@example-project.
"
    }
  }
}

第 3 步:(可选)配置环境规模和性能参数

如需为您的环境指定规模和性能配置,请提供环境的 GKE 集群中的节点数量,并为环境组件选择机器类型。

控制台

在创建环境页面中执行以下操作:

  1. 在节点配置部分中:

    • 输入节点数。

      节点数是环境集群中的 Google Kubernetes Engine 节点数量。默认情况下,环境具有 3 个节点。

      您可以在创建环境后更改此值。

    • 为节点选择机器类型。

      节点的机器类型是集群实例使用的 Compute Engine 机器类型。此参数确定您的环境的 CPU 数和内存量。默认机器类型为 n1-standard-1。

      如需在创建环境后更改此值,您必须手动重新配置环境集群。

    • 输入磁盘大小。

      环境节点的磁盘大小(以 GB 为单位)。您环境中的每个节点都具有此数量的磁盘空间。如果您希望将大量数据存储在与环境虚拟机同步的文件夹中,请选择较大的磁盘大小。例如,在环境存储桶的 /data 文件夹中。

      最小为 30 GB。默认大小为 100 GB。创建环境后,您无法更改此参数。

    • 选择调度器数量。

      您的环境可以同时运行多个 Airflow 调度器。使用多个调度器在多个调度器实例之间分配负载,以实现更好的性能和可靠性。

      增加调度器的数量并不总是可以提高 Airflow 性能。例如,仅使用一个调度器的性能可能优于使用两个调度器。如果额外的调度器未得到利用,则可能会发生这种情况,因而会占用环境的资源,而不会提升整体性能。实际的调度器性能取决于 Airflow 工作器的数量、在您的环境中运行的 DAG 和任务的数量,以及 Airflow 和环境的配置。

      我们建议您先使用两个调度器,然后再监控环境的性能。如果您更改调度器的数量,则可以随时将环境扩缩回原始调度器的数量。

      如需详细了解如何配置多个调度器,请参阅 Airflow 文档。

  2. 展开网络、Airflow 配置替换及其他功能项。

  3. 在 Cloud SQL 配置部分中,选择 Cloud SQL 机器类型。

    此参数确定运行 Airflow 数据库的 Cloud SQL 实例的机器类型。默认 Cloud SQL 机器类型为 db-n1-standard-2。

  4. 在网络服务器配置部分中,选择网络服务器机器类型。

    此参数确定运行 Airflow 网络服务器的 Compute Engine 实例的机器类型。

    默认网络服务器机器类型为 composer-n1-webserver-2。

gcloud

创建环境时,以下参数可用于控制环境规模和性能参数:

  • --node-count 可用于指定环境中的节点数量。

    节点数是环境集群中的 Google Kubernetes Engine 节点数量。默认情况下,环境具有 3 个节点。

    您可以在创建环境后更改此值。

  • --scheduler-count 指定您环境中的调度器数量。

    您的环境可以同时运行多个 Airflow 调度器。使用多个调度器在多个调度器实例之间分配负载,以实现更好的性能和可靠性。

    增加调度器的数量并不总是可以提高 Airflow 性能。例如,仅使用一个调度器的性能可能优于使用两个调度器。如果额外的调度器未得到利用,则可能会发生这种情况,因而会占用环境的资源,而不会提升整体性能。实际的调度器性能取决于 Airflow 工作器的数量、在您的环境中运行的 DAG 和任务的数量,以及 Airflow 和环境的配置。

    我们建议您先使用两个调度器,然后再监控环境的性能。如果您更改调度器的数量,则可以随时将环境扩缩回原始调度器的数量。

    如需详细了解如何配置多个调度器,请参阅 Airflow 文档。

  • --disk-size 用于指定环境虚拟机的磁盘大小。

    环境节点的磁盘大小(以 GB 为单位)。您环境中的每个节点都具有此数量的磁盘空间。如果您希望将大量数据存储在与环境虚拟机同步的文件夹中,请选择较大的磁盘大小。例如,在环境存储桶的 /data 文件夹中。

    最小为 30 GB。默认大小为 100 GB。创建环境后,您无法更改此参数。

  • --machine-type 指定节点虚拟机的机器类型。

    节点的机器类型是集群实例使用的 Compute Engine 机器类型。此参数确定您的环境的 CPU 数和内存量。默认机器类型为 n1-standard-1。

    如需在创建环境后更改此值,您必须手动重新配置环境集群。

  • --cloud-sql-machine-type 指定 Cloud SQL 实例的机器类型。

    此参数确定运行 Airflow 数据库的 Cloud SQL 实例的机器类型。默认 Cloud SQL 机器类型为 db-n1-standard-2。

  • --web-server-machine-type 指定 Airflow 网络服务器实例的机器类型。

    此参数确定运行 Airflow 网络服务器的 Compute Engine 实例的机器类型。

    默认网络服务器机器类型为 composer-n1-webserver-2。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "SERVICE_ACCOUNT" \
    --zone NODE_ZONE \
    --node-count NODE_COUNT \
    --scheduler-count SCHEDULER_COUNT \
    --disk-size DISK_SIZE \
    --machine-type NODE_MACHINE_TYPE \
    --cloud-sql-machine-type SQL_MACHINE_TYPE \
    --web-server-machine-type WS_MACHINE_TYPE

替换:

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
" \
    --zone us-central1-a \
    --node-count 6 \
    --scheduler-count 1 \
    --disk-size 50 \
    --machine-type n1-standard-2 \
    --cloud-sql-machine-type db-n1-standard-2 \
    --web-server-machine-type composer-n1-webserver-2

API

创建环境时,请在环境 > EnvironmentConfig 资源中指定环境规模和性能参数。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeCount": NODE_COUNT,
    "nodeConfig": {
      "machineType": "NODE_MACHINE_TYPE",
      "diskSizeGb": DISK_SIZE,
      "serviceAccount": "SERVICE_ACCOUNT"
    },
    "softwareConfig": {
      "schedulerCount": SCHEDULER_COUNT
    },
    "databaseConfig": {
      "machineType": "SQL_MACHINE_TYPE"
    },
    "webServerConfig": {
      "machineType": "WS_MACHINE_TYPE"
    }
  }
}

替换:

  • 将 NODE_COUNT 替换为节点数。
  • 将 DISK_SIZE 替换为环境虚拟机的磁盘大小(以 GB 为单位)。
  • 将 NODE_MACHINE_TYPE 替换为节点虚拟机的机器类型。此值必须包含环境虚拟机的可用区。
  • SCHEDULER_COUNT 替换为调度器的数量。
  • 将 SQL_MACHINE_TYPE 替换为 Cloud SQL 实例的机器类型。
  • 将 WS_MACHINE_TYPE 替换为 Airflow 网络服务器实例的机器类型。

例如:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeCount": 6,
    "nodeConfig": {
      "machineType": "projects/example-project/zones/us-central1-a/machineTypes/n1-standard-2",
      "diskSizeGb": 50,
      "serviceAccount": "
example-account@example-project.
"
    },
    "softwareConfig": {
      "schedulerCount": 1
    },
    "databaseConfig": {
      "machineType": "db-n1-standard-2"
    },
    "webServerConfig": {
      "machineType": "composer-n1-webserver-2"
    }
  }
}

Terraform

创建环境时,以下字段可用于控制环境规模和性能参数:

  • node_config 块中的 node_count 指定您的环境中的节点数。

    节点数是环境集群中的 Google Kubernetes Engine 节点数量。默认情况下,环境具有 3 个节点。

    您可以在创建环境后更改此值。

  • node_config 块中的 disk_size_gb 指定环境虚拟机的磁盘大小。

    环境节点的磁盘大小(以 GB 为单位)。您环境中的每个节点都具有此数量的磁盘空间。如果您希望将大量数据存储在与环境虚拟机同步的文件夹中,请选择较大的磁盘大小。例如,在环境存储桶的 /data 文件夹中。

    最小为 30 GB。默认大小为 100 GB。创建环境后,您无法更改此参数。

  • node_config 块中的 machine_type 指定节点虚拟机的机器类型。指定此字段时,还应在 zone 字段中为您的环境虚拟机提供一个 Compute Engine 可用区。

    节点的机器类型是集群实例使用的 Compute Engine 机器类型。此参数确定您的环境的 CPU 数和内存量。默认机器类型为 n1-standard-1。

    如需在创建环境后更改此值,您必须手动重新配置环境集群。

  • database_config 块中的 machine_type 指定 Cloud SQL 实例的机器类型。

    此参数确定运行 Airflow 数据库的 Cloud SQL 实例的机器类型。默认 Cloud SQL 机器类型为 db-n1-standard-2。

  • web_server_config 块中的 machine_type 指定 Airflow 网络服务器实例的机器类型。

    此参数确定运行 Airflow 网络服务器的 Compute Engine 实例的机器类型。

    默认网络服务器机器类型为 composer-n1-webserver-2。

  • software_config 块中的 scheduler_count 字段指定了环境中的调度器的数量。您的环境必须使用 Airflow 2。

resource "google_composer_environment" "example" {
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      node_count = NODE_COUNT
      disk_size_gb = DISK_SIZE
      machine_type = "NODE_MACHINE_TYPE"
      zone = "NODE_ZONE"
      service_account = "SERVICE_ACCOUNT"
    }

    software_config {
      scheduler_count = SCHEDULER_COUNT
    }

    database_config {
      machine_type = "SQL_MACHINE_TYPE"
    }

    web_server_config {
      machine_type = "WS_MACHINE_TYPE"
    }
  }
}

替换:

  • 将 NODE_COUNT 替换为节点数。
  • 将 DISK_SIZE 替换为环境虚拟机的磁盘大小(以 GB 为单位)。
  • 将 NODE_MACHINE_TYPE 替换为节点虚拟机的机器类型。
  • 将 NODE_ZONE 替换为您的环境虚拟机的 Compute Engine 可用区。
  • SCHEDULER_COUNT 替换为调度器的数量。
  • 将 SQL_MACHINE_TYPE 替换为 Cloud SQL 实例的机器类型。
  • 将 WS_MACHINE_TYPE 替换为 Airflow 网络服务器实例的机器类型。

例如:

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      node_count = 4
      disk_size_gb = 100
      zone = "us-central1-a"
      machine_type = "n1-standard-2"
      service_account = "
example-account@example-project.
"
    }

    software_config {
      scheduler_count = 2
    }

    database_config {
      machine_type = "db-n1-standard-2"
    }

    web_server_config {
      machine_type = "composer-n1-webserver-2"
    }
  }
}

第 4 步:(可选)配置环境的网络

网络参数取决于您要创建的环境类型:

  • 公共 IP 环境。使用默认网络参数。

  • 专用 IP 环境(VPC 对等互连)。在此配置中,您的环境使用 VPC 对等互连来实现连接。

    配置专用 IP 环境:

    1. 为专用 IP 环境配置项目的网络。
    2. 为专用 IP 环境指定其他参数,如本部分稍后所述。

    对于具有 VPC 对等互连的专用 IP 环境,您需要了解以下内容:

    • 您的 VPC 网络 ID
    • 您的 VPC 子网 ID
    • VPC 子网中的两个次要 IP 范围:

      • pod 的次要 IP 范围
      • Service 的次要 IP 范围
    • 环境组件的 IP 范围:

      • GKE 控制平面的 IP 范围。
      • Web 服务器 IP 范围。
      • Cloud SQL 实例的 IP 范围。
  • 对于共享 VPC 环境,您必须为宿主项目进行额外的网络设置,然后在服务项目中创建公共或专用 IP 环境。按照配置共享 VPC 页面上的说明进行操作。

    对于共享 VPC 环境,您需要了解以下内容:

    • 您的宿主项目 VPC 网络 ID
    • 您的宿主项目 VPC 子网 ID

    • 宿主项目 VPC 子网中的两个次要 IP 范围:

      • pod 的次要 IP 范围
      • Service 的次要 IP 范围

    创建公共 IP 共享 VPC 环境时,您仍然需要为 pod 和服务指定宿主项目 VPC 网络、子网和次要 IP 地址范围。

  • 如需创建 VPC SC 环境,您必须创建服务边界,然后在此边界内创建专用 IP 环境。按照配置 VPC Service Controls 中的说明操作。

环境的其他网络选项包括:

控制台

要创建专用 IP 环境,请执行以下操作:

  1. 确保已针对您要创建的环境类型配置网络。

  2. 展开网络、Airflow 配置替换及其他功能项。

  3. 在网络配置部分中,选中启用 VPC 原生(使用别名 IP)复选框。

  4. 在网络下拉列表中,选择您的 VPC 网络 ID。

  5. 在子网下拉列表中,选择您的 VPC 子网 ID。

  6. 在 Pod IP 地址分配部分中,指定 Pod 的次要 IP 范围。您可以在 VPC 网络中使用现有的次要范围,也可以采用 CIDR 表示法指定新的次要范围。

  7. 在服务 IP 地址分配部分中,指定服务的次要 IP 范围。您可以在 VPC 网络中使用现有的次要范围,也可以采用 CIDR 表示法指定新的次要范围。

  8. 在专用 IP 部分中,选中启用专用 IP 复选框。

  9. 在 GKE 集群主服务器专用 IP 部分中,为 GKE 控制平面指定 IP 范围:

    • 如需对环境所在的区域使用默认 IP 范围,请选择默认 IP 范围。

    • 如需指定自定义 IP 范围,请选择自定义 IP 范围,并在 GKE 集群主服务器专用 IP 字段中输入采用 CIDR 表示法的范围。

  10. 选择 GKE 控制平面的访问权限级别。控制平面有两个端点。一个端点是专用的,供集群节点和虚拟机使用。另一个端点是公开的。您可以为公共端点指定访问权限级别:

  11. 在网络服务器专用 IP 部分中,指定 Airflow 网络服务器实例的 IP 范围。

  12. 在 Cloud SQL 专用 IP 部分中,指定 Cloud SQL 实例的 IP 范围。

gcloud

确保已针对您要创建的环境类型配置网络。

创建环境时,以下参数可控制网络参数。如果您省略参数,则系统会使用默认值。

  • --enable-private-environment 用于启用专用 IP 环境。

  • --enable-ip-alias 会启用使用别名 IP 地址的 VPC 原生功能。

    使用 --enable-private-environment 时或为 pod 和服务配置次要范围时,必须填写此参数。

  • --network 用于指定您的 VPC 网络 ID。

  • --subnetwork 用于指定您的 VPC 子网 ID。

  • --cluster-secondary-range-name 或 --cluster-ipv4-cidr 用于配置 pod 的次要范围。

  • --services-secondary-range-name 或 --services-ipv4-cidr 用于配置服务的次要范围。

  • --master-ipv4-cidr 用于指定 GKE 控制平面的范围。

  • --web-server-ipv4-cidr 用于指定 Airflow 网络服务器实例的范围。

  • --cloud-sql-ipv4-cidr 用于指定 Cloud SQL 实例的范围。

  • --enable-private-endpoint 用于控制 GKE 控制平面的访问权限级别。控制平面有两个端点。一个端点是专用的,供集群节点和虚拟机使用。 另一个端点是公开的。您可以为公共端点指定访问权限级别:

  • --enable-master-authorized-networks 和 --master-authorized-networks 实参用于为您的环境配置授权网络。

  • --enable-privately-used-public-ips 为您的环境配置以非公开方式使用的公共 IP 地址。

  • --enable-ip-masq-agent 启用 IP 伪装代理。

示例(专用 IP 环境)

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-private-environment \
    --enable-ip-alias \
    --network NETWORK_ID \
    --subnetwork SUBNETWORK_ID \
    --cluster-ipv4-cidr PODS_RANGE \
    --services-ipv4-cidr SERVICES_RANGE \
    --master-ipv4-cidr CONTROL_PLANE_RANGE \
    --web-server-ipv4-cidr WEB_SERVER_RANGE \
    --cloud-sql-ipv4-cidr SQL_RANGE

将

  • 将 NETWORK_ID 替换为您的 VPC 网络 ID。
  • 将 SUBNETWORK_ID 替换为您的 VPC 子网 ID。

  • 将 PODS_RANGE 替换为 pod 的次要范围。

  • 将 SERVICES_RANGE 替换为服务的次要范围。

  • 将 CONTROL_PLANE_RANGE 替换为 GKE 控制平面的次要范围。

  • 将 WEB_SERVER_RANGE 替换为 Airflow 网络服务器实例的次要范围。

  • 将 SQL_RANGE 替换为 Cloud SQL 实例的范围。

第 5 步:(可选)添加网络标记

网络标记会应用于环境集群中的所有节点虚拟机。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须符合 RFC 1035 格式。

例如,如果您计划使用防火墙规则来限制专用 IP 环境的流量,则可能需要添加网络标记。

控制台

在创建环境页面中执行以下操作:

  1. 找到节点配置部分。
  2. 在标记字段中,为节点虚拟机指定实例标记。

gcloud

创建环境时,以下参数可控制网络标记:

  • --tags 指定应用于所有节点虚拟机的网络标记的逗号分隔列表。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "SERVICE_ACCOUNT" \
    --tags TAGS

将

  • 将 TAGS 替换为以英文逗号分隔的网络标记列表。

示例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --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.
"
    }
  }
}

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.
"
    }
  }
}

第 6 步:(可选)配置网络服务器网络访问权限

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-1.20.12-airflow-1.10.15 \
    --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-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
" \
    --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.
"
    }
  }
}

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.
"
    }

}

第 7 步:(可选)指定 Airflow 配置替换和环境变量

您可以在创建环境时设置 Airflow 配置替换和环境变量。或者,您可以在创建环境后执行此操作。

某些 Airflow 配置选项被屏蔽,您无法替换这些选项。

如需查看可用的 Airflow 配置选项列表,请参阅 Airflow 2 的配置参考和 Airflow 1.10.*

如需指定 Airflow 配置替换和环境变量,请执行以下操作:

控制台

在创建环境页面中执行以下操作:

  1. 展开网络、Airflow 配置替换及其他功能项。

  2. 在环境变量部分中,点击添加环境变量。

  3. 输入环境变量的名称和值。

  4. 在 Airflow 配置替换部分中,点击添加 Airflow 配置替换。

  5. 输入配置选项替换值的部分、键和值。

    例如:

    节 键 值
    webserver dag_orientation TB

gcloud

创建环境时,以下参数可用于控制环境变量和 Airflow 配置替换:

  • --env-variables 用于指定环境变量的英文逗号分隔列表。

    变量名称可以包含大写和小写字母、数字和下划线,但不能以数字开头。

  • --airflow-configs 用于指定 Airflow 配置替换的键和值的逗号分隔列表。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --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-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
" \
    --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.
"
    }
  }
}

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.
"
    }
  }
}

第 8 步:(可选)指定维护窗口

默认情况下,如果您使用Google Cloud 控制台、API 或 Terraform 创建 Managed Airflow(旧版第 1 代)环境,则这些环境不会定义维护窗口。建议您为新环境和现有环境指定维护窗口。

如果您使用 gcloud CLI 创建环境,则您的环境默认的维护窗口为每周五、周六和周日的 00:00:00 到 04:00:00 (GMT)。

如需为您的环境指定自定义维护窗口,请执行以下操作:

控制台

在创建环境页面中执行以下操作:

  1. 展开网络、Airflow 配置替换及其他功能项。

  2. 在维护窗口部分中,选中设置维护窗口的自定义时间复选框。

  3. 在时区下拉列表中,选择维护窗口的时区。

  4. 设置开始时间、天数和长度,以便指定 7 天的滚动期内,时间表的总时间至少 12 小时。例如,每个星期一、星期三和星期五的 4 小时提供了所需的时间。

gcloud

以下参数定义了维护窗口参数:

  • --maintenance-window-start 设置自定义维护窗口的开始时间。
  • --maintenance-window-end 设置维护窗口的结束时间。
  • --maintenance-window-recurrence 设置维护窗口重复。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --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。托管式 Airflow 支持两种格式:

  • 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-1.20.12-airflow-1.10.15 \
  --service-account "
example-account@example-project.
" \
  --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。托管式 Airflow 支持两种格式:

  • 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。托管式 Airflow 支持两种格式:

    • 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"
    }
  }
}

第 9 步:(可选)配置数据加密 (CMEK)

默认情况下,环境中的数据使用 Google 提供的密钥进行加密。

如需使用客户管理的加密密钥 (CMEK) 来加密您环境中的数据,请按照使用客户管理的加密密钥中的说明操作。

第 10 步:(可选)指定环境标签

您可以为环境分配标签,以根据这些标签细分结算费用。

控制台

在创建环境页面中执行以下操作:

  1. 展开网络、Airflow 配置替换及其他功能项。

  2. 在标签部分中,点击添加标签。

  3. 在键和值字段中,指定环境标签的键值对。

gcloud

当您创建环境时,--labels 参数会指定键和值的逗号分隔列表以及环境标签。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "SERVICE_ACCOUNT" \
    --labels LABELS

替换:

  • 将 LABELS 替换为环境标签的以逗号分隔的 KEY=VALUE 对列表。

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
" \
    --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"
  }

}

步骤 11.(可选)配置其他参数

其他参数包括:

  • 您的环境节点所在的可用区

    要在其中部署集群节点的 Compute Engine 可用区。在此参数中,您可以选择环境位置中的特定可用区。

    默认情况下,系统会自动选择随机可用区。

  • OAuth 范围

    OAuth 范围是一组可用于所有节点虚拟机的 Google API 范围。如果为空,则默认为 https://www.googleapis.com/auth/cloud-platform。

    如果您指定了自定义 OAuth 范围,请在指定范围列表中添加 https://www.googleapis.com/auth/cloud-platform。

  • Python 版本

    如果您的环境使用 Airflow 1.10.* 及更低版本的 Airflow,您可以将环境设置为使用 Python 2。默认的 Python 版本是 Python 3。如需详细了解 Managed Airflow 中的 Python 2 支持,请参阅支持的 Python 版本。

控制台

在创建环境页面中执行以下操作:

  1. 在节点配置部分中:

    • 在可用区下拉列表中,为您的环境节点选择一个可用区。

      您之后将无法更改可用区。

    • 在 OAuth 范围字段中,指定节点虚拟机的 OAuth 范围。

      您以后无法更改 OAuth 范围。

      如需指定多个 OAuth 范围,请提供以英文逗号分隔的值列表。将 https://www.googleapis.com/auth/cloud-platform 包含在指定范围列表中。

    • 在 Python 版本字段中,选择 Python 的版本。

      您之后无法更改 Python 版本。

gcloud

创建环境时,以下参数可用于控制环境的其他参数:

  • --zone 为您的环境虚拟机指定 Compute Engine 可用区。

  • --oauth-scopes 指定以逗号分隔的 OAuth 范围列表。 将 https://www.googleapis.com/auth/cloud-platform 包含在指定范围列表中。

  • --python-version 可用于指定 Python 的版本。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "SERVICE_ACCOUNT" \
    --zone ZONE \
    --oauth-scopes OAUTH_SCOPES \
    --python-version PYTHON_VERSION

替换:

  • 将 ZONE 替换为 Compute Engine 可用区的名称。
  • 将 OAUTH_SCOPES 替换为 OAuth 范围的逗号分隔列表。
  • 将 PYTHON_VERSION 替换为 Python 版本(3 或 2)。

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --service-account "
example-account@example-project.
" \
    --zone us-central1-a \
    --oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery  \
    --python-version 3

API

创建环境时,请在环境 > EnvironmentConfig 资源中指定环境的其他参数。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "location": "projects/PROJECT_ID/zones/ZONE",
      "oauthScopes": [
        "OAUTH_SCOPE"
      ],
      "serviceAccount": "SERVICE_ACCOUNT"
    },
    "softwareConfig": {
        "pythonVersion": "PYTHON_VERSION"
    }
  }
}

替换:

  • 将 ZONE 替换为 Compute Engine 可用区的名称。
  • 将 OAUTH_SCOPE 替换为 OAuth 范围。如需指定其他范围,请添加 https://www.googleapis.com/auth/cloud-platform 范围,后跟其他范围项。
  • 将 PYTHON_VERSION 替换为 Python 版本(3 或 2)。

例如:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeConfig": {
      "location": "projects/example-project/zones/us-central1-a",
      "oauthScopes": [
        "https://www.googleapis.com/auth/cloud-platform",
        "https://www.googleapis.com/auth/bigquery"
      ],
      "serviceAccount": "
example-account@example-project.
"
    },
    "softwareConfig": {
        "pythonVersion": "3"
    }
  }
}

Terraform

创建环境时,以下字段可用于控制环境的其他参数:

  • node_config 块中的 zone 字段指定环境虚拟机的 Compute Engine 可用区。

  • node_config 块中的 oauth_scopes 字段指定 OAuth 范围的逗号分隔列表。

  • software_config 块中的 python_version 字段可用于指定 Python 的版本。

resource "google_composer_environment" "example" {
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      zone = "ZONE"
      oauth_scopes = "[OAUTH_SCOPES]"
      service_account = "SERVICE_ACCOUNT"
    }

    software_config {
      python_version = "PYTHON_VERSION"
    }
  }
}

替换:

  • 将 ZONE 替换为 Compute Engine 可用区的名称。
  • 将 OAUTH_SCOPES 替换为 OAuth 范围的逗号分隔列表。
  • 将 PYTHON_VERSION 替换为 Python 版本(3 或 2)。

例如:

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"

  config {
    node_config {
      zone = "us-central1-a"
      oauth_scopes = "[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery]"
      service_account = "
example-account@example-project.
"
    }
    software_config {
      python_version = "3"
    }
  }
}

步骤 12.(可选)强制使用 Beta 版 API

即使您的环境没有任何预览功能,您也可以明确让您的环境使用 Beta 版 Cloud Composer API。如果您这样做,则系统将使用 v1beta1 服务端点创建环境。

控制台

在创建环境页面中执行以下操作:

  1. 展开网络、Airflow 配置替换及其他功能项。

  2. 在 Beta API 部分中,选中强制使用 Beta 版 API 复选框。

gcloud

使用 gcloud beta composer 命令创建环境。

API

使用 v1beta1 服务端点创建环境。

Terraform

默认情况下,Managed Airflow 的 Terraform 提供方使用 Beta 版 API。

后续步骤