创建环境

本页面介绍了如何创建 Cloud Composer 环境。

Cloud Composer 环境是部署到托管式 Google Kubernetes Engine 集群的自为一体的 Apache Airflow 安装。如需详细了解环境,请参阅环境架构

您可以在单个 Google Cloud 项目中创建一个或多个环境。

准备工作

  • 在创建环境期间,您需要指定一个服务帐号。您环境中的集群中的节点将以此帐号的身份运行。

    默认情况下,Cloud Composer 环境使用 Google 管理的默认 Compute Engine 服务帐号。我们建议您创建一个具有 Cloud Composer 特定角色的用户管理的服务帐号,并将其用于您的环境。

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

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

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

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

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

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

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

第 1 步:基本设置

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

该环境使用 Cloud Composer 的默认 Cloud Composer 映像

控制台

  1. 在 Google Cloud Console 中,转到 Cloud Composer 的创建环境页面。

    转到“创建环境”

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

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

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

    该位置是环境的 GKE 集群所在的 Compute Engine 区域

  4. 继续执行下一步,或点击创建以创建环境。

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境的名称。

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

  • LOCATION 替换为环境的区域。

    该位置是环境的 GKE 集群所在的 Compute Engine 区域

例如:

gcloud composer environments create example-environment \
    --location us-central1

API

构建 environments.create API 请求。在 Environment 资源中指定配置。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME"
}

您需要将其中的:

  • PROJECT_ID 替换为项目 ID

  • LOCATION 替换为环境的区域。

    该位置是环境的 GKE 集群所在的 Compute Engine 区域

  • ENVIRONMENT_NAME 替换为环境名称。

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

例如:

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

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment"

}

Terraform

要使用默认位置创建具有默认参数的环境,请将以下资源块添加到 Terraform 配置并运行 terraform apply

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

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境的名称。

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

  • LOCATION 替换为环境的区域。

    该位置是环境的 GKE 集群所在的 Compute Engine 区域

例如:

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

第 2 步:(可选)选择 Cloud Composer 和 Airflow 版本

如需创建使用特定版本的 Cloud Composer 和 Airflow 的环境,请执行以下操作:

控制台

创建环境页面的节点配置部分的映像版本下拉列表中,选择一个使用所需 Airflow 版本的 Cloud Composer 映像

gcloud

  1. 选择具有所需 Airflow 版本的 Cloud Composer 映像

  2. 创建环境时,请使用 --image-version 参数。

    gcloud composer environments create ENVIRONMENT_NAME \
        --location LOCATION \
        --image-version IMAGE_VERSION
    

    您需要将其中的:

    • IMAGE_VERSION 替换为 Cloud Composer 映像的名称。

    例如:

    gcloud composer environments create example-environment \
        --location us-central1 \
        --image-version "composer-1.16.5-airflow-1.10.15"
    

API

  1. 选择具有所需 Airflow 版本的 Cloud Composer 映像

  2. 当您创建环境时,请在环境 > EnvironmentConfig > SoftwareConfig 资源中使用 imageVersion 字段。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    }
  }
}

您需要将其中的:

  • IMAGE_VERSION 替换为 Cloud Composer 映像的名称。

例如:

{
  // 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.16.5-airflow-1.10.15"
    }
  }
}

Terraform

  1. 选择具有所需 Airflow 版本的 Cloud Composer 映像

  2. 创建环境时,请使用 software_config 块中的 image_version 字段。

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

  config {
    software_config {
      image_version = "IMAGE_VERSION"
    }
  }
}

您需要将其中的:

  • IMAGE_VERSION 替换为 Cloud Composer 映像的名称。

例如:

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

  config {
    software_config {
      image_version = "composer-1.16.5-airflow-1.10.15"
    }
  }
}

第 3 步:(可选)为您的环境选择服务帐号

您的环境集群中的节点将作为此服务帐号运行。

默认情况下,Cloud Composer 环境使用默认的 Compute Engine 服务帐号。我们建议您为 Cloud Composer 环境设置用户管理的服务帐号

(而非单个用户)使用的特殊帐号。

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

控制台

创建环境页面的节点配置部分的服务帐号下拉列表中,为您的环境选择服务帐号。

gcloud

当您创建环境时,--service-account 会为您的环境指定服务帐号。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --service-account "SERVICE_ACCOUNT"

您需要将其中的:

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

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --service-account "example-account@example-project.iam.gserviceaccount.com"

API

创建环境时,在环境 > EnvironmentConfig 资源中,为您的环境指定服务帐号。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
}

您需要将其中的:

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

例如:


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

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeConfig": {
      "serviceAccount": "example-account@example-project.iam.gserviceaccount.com"
    }
  }
}

Terraform

创建环境时,请使用 node_config 块中的 service_account 字段。

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

  config {
    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

您需要将其中的:

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

例如:

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

  config {
    node_config {
      service_account = "example-account@example-project.iam.gserviceaccount.com"
    }
  }
}

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

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

控制台

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

  1. 节点配置部分:

    • 输入节点数

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

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

    • 为节点选择机器类型

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

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

    • 输入磁盘大小

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

      最小为 20 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 可指定环境中的节点数量。

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

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

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

    您的环境可以同时运行多个 Airflow 调度器。使用多个调度器在多个调度器实例之间分配负载,以实现更好的性能和可靠性。您可以指定调度器数量,不超过您环境中的节点数。

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

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

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

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

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

    最小为 20 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 \
    --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 \
    --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
    },
    "softwareConfig": {
      "schedulerCount": SCHEDULER_COUNT
    },
    "databaseConfig": {
      "machineType": "SQL_MACHINE_TYPE"
    },
    "webServerConfig": {
      "machineType": "WS_MACHINE_TYPE"
    }
  }
}

您需要将其中的:

例如:


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

// With preview features (multiple schedulers):
// POST https://composer.googleapis.com/v1beta1/{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
    },
    "softwareConfig": {
      "schedulerCount": 1
    },
    "databaseConfig": {
      "machineType": "db-n1-standard-2"
    },
    "webServerConfig": {
      "machineType": "composer-n1-webserver-2"
    }
  }
}

Terraform

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

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

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

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

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

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

    最小为 20 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

  • 无法使用 Terraform 指定调度器的数量。

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

    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 可用区。
  • 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"
    }

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

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

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

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

  • 对于公共 IP 环境,请使用默认的网络参数。
  • 对于专用 IP 环境,您必须在项目中进行额外的网络设置,然后创建一个环境。如需了解所需步骤,请参阅配置专用 IP Cloud Composer 环境
  • 对于共享 VPC 环境,您必须为宿主项目进行额外的网络设置,然后在服务项目中创建环境。按照配置共享 VPC 页面上的说明进行操作。
  • 如需创建 VPC SC 环境,您必须创建服务边界,然后在此边界内创建环境。按照配置 VPC Service Controls 中的说明执行操作。

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

Airflow 网络服务器访问参数不取决于您的环境类型。您可以改为单独配置网络服务器访问权限。例如,专用 IP 环境仍然可以通过互联网访问 Airflow 界面。

控制台

创建环境页面的网络服务器配置部分,执行以下操作:

  • 如需向授权用户授予从互联网访问 Airfow 的权限,请选择允许从所有 IP 地址访问

  • 如需限制只有特定 IP 范围的访问权限,请选择仅允许从特定 IP 地址访问。在 IP 范围字段中,以 CIDR 表示法指定 IP 范围。在说明字段中,指定此范围的可选说明。

gcloud

创建环境时,以下参数可控制网络服务器访问权限级别:

  • --web-server-allow-all 可让已获授权的用户通过互联网访问 Airfow。这是默认选项。

  • --web-server-allow-ip 仅允许访问特定的来源 IP 地址范围。如需指定多个 IP 范围,请多次使用此参数。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --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 \
    --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 资源中指定网络服务器访问参数。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

您需要将其中的:

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

Terraform

创建环境时,web_server_network_access_control 块中的 allowed_ip_range 块包含可以访问网络服务器的 IP 地址范围。

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

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }

    }

  }
}

您需要将其中的:

  • WS_IP_RANGE 替换为可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。
  • WS_RANGE_DESCRIPTION 替换为 IP 地址范围的说明。

例如:

resource "google_composer_environment" "example" {
  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"
      }

    }
}

第 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 \
    --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 \
    --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",
      }
    }
  }
}

您需要将其中的:

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

Terraform

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

  • software_config 块中的 env_variables 块指定环境变量。

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

  • software_config 块中的 airflow_config_overrides 块指定 Airflow 配置替换。
resource "google_composer_environment" "example" {
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      airflow_config_overrides = {
        SECTION-KEY = "OVERRIDE_VALUE"
      }

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }
    }
  }
}

您需要将其中的:

  • SECTION 替换为 Airflow 配置选项所在配置文件中的部分。
  • KEY 替换为 Airflow 配置选项的名称。
  • OVERRIDE_VALUE 替换为 Airflow 配置选项的值。
  • VAR_NAME 替换为环境变量的名称。
  • VAR_VALUE 替换为环境变量的值。

例如:

resource "google_composer_environment" "example" {
  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"
      }
    }
  }
}

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

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

控制台

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

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

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

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

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

gcloud

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

  • --maintenance-window-start 设置自定义维护窗口的开始时间。
  • --maintenance-window-end 设置维护窗口的结束时间。
  • --maintenance-window-recurrence 设置维护窗口重复
gcloud beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --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 小时维护窗口。忽略 2021 年 1 月 1 日的日期。

gcloud beta composer environments create example-environment \
  --location us-central1 \
  --maintenance-window-start '2021-01-01T01:00:00Z' \
  --maintenance-window-end '2021-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"
    }
  }
}

您需要将其中的:

  • 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 小时维护窗口。忽略 2021 年 1 月 1 日的日期。

例如:


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

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "maintenanceWindow": {
        "startTime": "2021-01-01T01:00:00Z",
        "endTime": "2021-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

Terraform

无法使用 Terraform 指定维护窗口。您可以使用 Terraform 创建环境,然后使用 Google Cloud Console 或 gcloud 指定维护窗口

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

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

控制台

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

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

  2. 标签部分,点击添加标签

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

gcloud

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --labels LABELS

您需要将其中的:

  • LABELS 替换为环境标签的 KEY=VALUE 对列表。

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --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" {
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  labels = {
    LABEL_KEY = "LABEL_VALUE"
  }

}

您需要将其中的:

  • LABEL_KEY 替换为环境标签的键。
  • LABEL_VALUE 替换为环境标签的值。

例如:

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

  labels = {
    owner = "engineering-team"
    env = "production"
  }

}

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

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

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

第 11 步:(可选)配置其他参数

其他参数包括:

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

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

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

  • OAuth 范围

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

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

  • 节点虚拟机标记

    应用于所有节点虚拟机的标记列表。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须遵循 RFC 1035

  • Python 版本

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

控制台

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

  1. 节点配置部分:

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

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

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

      您以后无法更改 OAuth 范围。

    • 标记字段中,为节点虚拟机指定实例标记。

      标记创建后便无法更改。

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

      您以后无法更改 Python 版本。

gcloud

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

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

  • --oauth-scopes 指定以逗号分隔的 OAuth 范围列表。

  • --tags 指定应用于所有节点虚拟机的实例标记的逗号分隔列表。

  • --python-version 指定 Python 的版本。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --zone ZONE \
    --oauth-scopes OAUTH_SCOPES \
    --tags TAGS \
    --python-version PYTHON_VERSION

您需要将其中的:

  • ZONE 替换为 Compute Engine 可用区的名称。
  • OAUTH_SCOPES 替换为 OAuth 范围的逗号分隔列表。
  • TAGS 替换为实例标记的逗号分隔列表。
  • PYTHON_VERSION 替换为 Python 版本(32)。

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --zone us-central1-a \
    --oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery  \
    --tags group1,production \
    --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"
      ],
      "tags": [
        "TAG"
      ]
    },
    "softwareConfig": {
        "pythonVersion": "PYTHON_VERSION"
    }
  }
}

您需要将其中的:

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

例如:

// 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"
      ],
      "tags": [
        "group1",
        "production"
      ]
    },
    "softwareConfig": {
        "pythonVersion": "3"
    }
  }
}

Terraform

创建环境时,以下字段用于控制环境的杂项参数:

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

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

  • node_config 块中的 tags 字段指定应用于所有节点虚拟机的实例标记的逗号分隔列表。

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

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

  config {

    node_config {
      zone = "ZONE"
      oauth_scopes = "[OAUTH_SCOPES]"
      tags = "TAGS"
    }

    software_config {
      python_version = "PYTHON_VERSION"
    }
  }
}

您需要将其中的:

  • ZONE 替换为 Compute Engine 可用区的名称。
  • OAUTH_SCOPES 替换为 OAuth 范围的逗号分隔列表。
  • TAGS 替换为实例标记的逗号分隔列表。
  • PYTHON_VERSION 替换为 Python 版本(32)。

例如:

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]"
      tags = "[group1,production]"
    }
    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

适用于 Cloud Composer 的 Terraform 提供程序默认使用 Beta 版 API。

后续步骤