创建环境

本页面介绍如何创建 Cloud Composer 环境,以及在创建过程中如何替换默认 Airflow 环境设置。

Cloud Composer 环境运行 Apache Airflow 软件。在 Google Cloud Platform (GCP) 项目中创建新的环境时,您可以指定多个参数,例如 Compute Engine 机器类型或集群中的节点数。

准备工作

访问权限控制

  • 要创建 Cloud Composer 环境,您需要拥有 environments.create 权限。如需了解详情,请参阅 Cloud Composer 访问权限控制

  • 如果您已为组织启用了网域限定共享,则必须停用这项政策限制才能创建环境。此操作的目的是允许 Cloud Composer 将所需的 ALC 应用于与您的环境关联的 Cloud Storage 存储分区。您可以在环境创建后重新启用这项政策限制。

  • 默认情况下,Cloud Composer 环境以 Compute Engine 默认服务帐号身份运行。在环境创建期间,您可以指定自定义服务帐号。该服务帐号至少需要拥有 composer.worker 角色提供的权限才能访问 Cloud Composer 环境中的资源。您可能会在项目的 IAM 政策或 GCP Console 中看到其他一些 Google 自有的服务帐号。如需了解可用的类型和角色,请参阅服务帐号

  • 如果您的自定义服务帐号需要在任务执行期间访问 Google Cloud Platform 项目中的其他资源,则可以为该服务帐号添加所需的权限。或者,您也可以采用 Airflow 连接的形式提供相关凭据,然后在操作器中引用该连接。

测试版功能

  • 您必须在 GCP Console 中启用测试版功能支持,才能在您的环境中使用测试版功能。

  • 如果您创建的环境使用测试版功能,那么若想更新或删除该环境,您也必须使用测试版界面。如需了解详情,请参阅测试版功能支持

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

  • 专用 IP:要创建专用 IP Cloud Composer 环境,您需要遵循特定的网络和对等互连要求。如需了解相关信息,请参阅配置专用 IP

创建新的环境

要创建一个 Cloud Composer 环境,请执行以下操作:

Console

  1. 打开 Google Cloud Platform Console 中的创建环境页面。

    打开“创建环境”页面

  2. 为您的环境输入一个名称。

    该名称必须以小写字母开头,后面最多可跟 63 个小写字母、数字或连字符,但不能以连字符结尾。

  3. 节点配置下,为 Google Kubernetes Engine 集群中的节点指定设置。如果您未指定设置,则系统将使用默认值。

    设置 说明
    节点数 用于运行环境的 Google Kubernetes Engine 节点数。默认值为 3 个节点。节点数是在环境创建后您可更改的唯一 Google Kubernetes Engine 集群设置。
    位置 (必填)用于创建环境的 Compute Engine 区域
    地区后缀 用于创建运行 Apache Airflow 的虚拟机实例的 Compute Engine 地区。如果您未指定此设置,则系统会在该位置范围内随机选择一个地区。
    机器类型 集群实例使用的 Compute Engine 机器类型。该机器类型决定了您的环境的 CPU 数和内存量。Cloud Composer 支持 Compute Engine 标准机器类型。默认的机器类型为 n1-standard-1。
    磁盘大小 节点虚拟机实例使用的磁盘大小(以 GB 为单位)。最小大小为 20 GB。默认大小为 100 GB。
    OAuth 范围 在所有节点虚拟机实例上提供的一组 Google API 范围。默认值为 https://www.googleapis.com/auth/cloud-platform,此范围必须包含在指定范围的列表中。
    服务帐号 要供节点虚拟机实例使用的 Google Cloud Platform 服务帐号。如果您未指定该设置,则系统将使用默认的 Compute Engine 服务帐号。
    标记 应用于所有节点虚拟机实例的实例标记的列表。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须符合 RFC 1035 格式。
    映像版本 要在您的环境中使用的 Cloud Composer 版本(包括 Cloud Composer 和 Airflow 版本)。有关默认版本的信息,请参阅版本列表
    Python 版本 要在您的环境中使用的 Python 版本。支持的版本是 Python 2 和 Python 3。默认版本为 2。
  4. 网络配置下,为 Google Kubernetes Engine 集群指定网络设置。如果您未指定设置,则系统将使用默认值。

    设置 说明
    网络 可供您的环境用来进行机器通信的 VPC 网络。默认值为此项目中的网络。对于共享 VPC,请选择通过宿主项目共享的网络
    网络 ID 用于机器通信的 Virtual Private Cloud 网络 ID。要指定子网,您必须指定此网络 ID。如果未指定此设置,则系统会使用默认网络。
    子网 ID 用于机器通信的 Compute Engine 子网 ID
    专用 IP 环境 用于启用专用 IP Cloud Composer 环境。默认情况下,该环境处于停用状态。
    使用 GKE 主实例的外部 IP 地址访问该实例 用于授予对 GKE 集群主实例的公共访问权限。需要设置专用 IP 环境。
    GKE 主实例 IP 地址范围 (GKE master IP range) 主实例 VPC 的专用 RFC 1918 范围。对于专用 IP 环境,此为必填项。
  5. (可选)要更改或替换 Airflow 配置文件 (airflow.cfg) 中的默认值,请点击添加 Airflow 配置属性

  6. (可选)要配置环境变量,请点击添加环境变量。如需了解具体要求,请参阅环境变量

  7. (可选)要添加标签,请点击添加标签

    标签键和标签值只能包含字母、数字、短划线和下划线。标签键必须以字母或数字开头。

  8. 点击创建

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    OTHER_ARGUMENTS

以下是必填参数:

  • ENVIRONMENT_NAME 是环境的名称。该名称必须与以下格式匹配:^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$
  • LOCATION 是环境所在的 Compute Engine 区域。

以下是可选参数:

  • airflow-configsSECTION_NAME-PROPERTY_NAME=VALUE Airflow 配置替换项的列表。节名称和属性名称必须用连字符分隔。
  • disk-size 是节点虚拟机使用的磁盘大小(以 GB 为单位)。最小大小为 20 GB。默认磁盘大小为 100 GB。
  • env-variables 是为 Airflow 调度器、工作器和 Web 服务器进程设置的 NAME=VALUE 环境变量的列表。
  • enable-private-environment 用于启用专用 IP Cloud Composer 环境
    • enable-private-endpoint 用于授予对 GKE 集群主实例的公共访问权限。需要设置 enable-private-environment
    • master-ipv4-cidr 是主实例 VPC 的专用 RFC 1918 范围。enable-private-environment 为 true 时,必需填写此参数。
  • image-version 是要在您的环境中使用的 composer-addon 版本和 Airflow 版本,格式为 composer-a.b.c-airflow-x.y.z。如需了解版本别名和默认版本,请参阅 Cloud Composer 版本控制
  • labels 是附加到环境及其资源的用户指定标签
  • machine-type 是集群实例使用的 Compute Engine 机器类型。该机器类型决定了您的环境的 CPU 数和内存量。Cloud Composer 支持 Compute Engine 标准机器类型。默认的机器类型为 n1-standard-1
  • network 是用于机器通信的 Virtual Private Cloud 网络。要指定子网,您必须指定此网络。如果您未指定此参数,则系统会使用默认网络。使用共享 VPC 时,您必须使用 projects/HOST_PROJECT_ID/global/networks/NETWORK_ID 格式提供该网络的相对资源名称。如需了解共享 VPC 子网的要求,请参阅下面的 subnetwork
  • node-count 是用于运行环境的 GKE 节点数。默认节点数为 3 个。节点数是在环境创建后您可更改的唯一 Google Kubernetes Engine 集群设置。
  • oauth-scopes 是在所有节点虚拟机上提供的一组 Google API 范围。默认的 OAuth 范围为 https://www.googleapis.com/auth/cloud-platform,该范围必须包含在指定范围的列表中。
  • python-version 是要在您的环境中使用的 Python 版本。支持的版本是 Python 2 和 Python 3。默认版本为 2。
  • subnetwork 是环境所连接的 Compute Engine 子网。使用 gcloud 创建共享 VPC 环境时,您必须使用次要 IP 地址范围 composer-podscomposer-services。您可以使用 Cloud Composer API 指定不同的次要范围名称。此外,您还必须按照 projects/HOST_PROJECT_ID/regions/REGION_ID/subnetworks/SUBNET_ID 格式将子网名称指定为相对资源名称。共享 VPC 处于测试版阶段,需要使用 gcloud beta composer environments create 命令。
  • service-account 是节点虚拟机实例要使用的 Google Cloud Platform 服务帐号。如果您未指定此参数,则系统将使用默认的 Compute Engine 服务帐号。
  • tags 是应用于所有节点虚拟机的实例标记的列表。标记用于标识网络防火墙的有效来源或目标。此列表中的每个标记都必须符合 RFC 1035 格式。

以下示例会创建一个环境,该环境在 us-central1 区域运行受支持的最新 Cloud Composer 映像版本,并且使用带有 beta 环境标签的 n1-standard-2 机器类型:

gcloud beta composer environments create test-environment \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --image-version composer-latest-airflow-x.y.z \
    --labels env=beta  

以下共享 VPC 示例会在宿主项目中创建一个环境。该环境位于 us-central1 区域,并且使用带有 beta 环境标签的 n1-standard-2 机器类型:

gcloud beta composer environments create host-project-environment \
    --network vpc-network-name --subnetwork vpc-subnetwork-name
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --labels env=beta  

API

要使用 Cloud Composer REST API 创建新的 Cloud Composer 环境,请构建一个 environments.create API 请求,并使用您的配置信息填充 Environment 资源。

配置电子邮件通知

配置 SendGrid 电子邮件服务

若想接收通知,请配置相应环境变量,以通过 SendGrid 电子邮件服务发送电子邮件。

  1. 如果您还没有通过 Google Cloud Platform Console 注册 SendGrid 并创建一个 API 密钥,请执行此操作。作为 Google Cloud Platform 开发者,您每月可以免费发送 12000 封电子邮件。

  2. 在 GCP Console 中,打开创建环境页面。

    打开“创建环境”页面

  3. 节点配置下,点击添加环境变量

  4. 输入以下环境变量:

    名称
    SENDGRID_MAIL_FROM 发件人电子邮件地址,例如 noreply-composer@
    SENDGRID_API_KEY 您的 SendGrid API 密钥。
  5. 要测试 SendGrid 配置,请执行以下操作:

    1. 创建一个使用 EmailOperator 的测试 DAG。
    2. 将此 DAG 上传到您的环境,并检查 EmailOperator 任务是否成功执行。
    3. 使用您的 SendGrid 凭据登录 SendGrid。
    4. 在 SendGrid 界面中,转到“活动”页面。
    5. 在列表中搜索该电子邮件。您应该会看到 SendGrid 已处理并已递送该电子邮件。
    6. 如果该电子邮件未被处理和递送,请执行以下操作:
      • 检查 Sendgrid 配置。
      • 验证 SENDGRID_MAIL_FROMSENDGRID_API_KEY 环境变量是否正确。
      • 检查您的电子邮件客户端的垃圾邮件过滤器。

配置第三方 SMTP 服务

要通过第三方 SMTP 服务发送电子邮件,您必须替换 email_backend Airflow 配置

  1. 打开创建环境页面。

    打开“创建环境”页面

  2. Airflow 配置替换下,点击添加 Airflow 配置替换
  3. 输入以下配置属性:

    email email_backend airflow.utils.email.send_email_smtp
    smtp smtp_host SMTP 服务器的主机名。
    smtp smtp_user SMTP 服务器上的用户名。
    smtp smtp_port 端口 25 以外的一个端口。端口 25 已被屏蔽。
    smtp smtp_password Airflow 的默认 SMTP 密码。您不能配置新密码。
    smtp smtp_mail_from 发件人电子邮件地址,例如 noreply-composer@
    smtp smtp_starttls 为增强安全性,请设置为 True
    smtp smtp_ssl 为增强安全性,请设置为 True

对于其他 SMTP 配置,请参阅您使用的 Airflow 版本所对应的 default_airflow.cfg

替换 Airflow 配置

在创建或更新环境时,您可以替换 Apache Airflow 配置属性。部分属性已被屏蔽

Console

  1. 打开创建环境页面。

    打开“创建环境”页面

  2. Airflow 配置替换下,点击添加 Airflow 配置替换

  3. 输入该配置的和新

例如:

webserver dag_orientation RL

gcloud

要在创建环境时替换 Airflow 配置,请使用以下命令:

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --airflow-configs=KEY=VALUE,KEY=VALUE,...

其中:

  • ENVIRONMENT_NAME 是环境的名称。
  • LOCATION 是环境所在的 Compute Engine 区域。
  • KEY=VALUE 由配置节和属性名(二者用连字符分隔,例如 core-print_stats_interval)及相应属性值组成。

例如:

gcloud composer environments create test-environment \
    --location us-central1 \
    --airflow-configs=core-load_example=True,webserver-dag_orientation=TB 

操作完成后,该命令即终止。使用 --async 标志可避免等待。如需查看其他示例,请参阅“gcloud composer environments update”参考页面。

API

要在使用 Cloud Composer REST API 创建 Cloud Composer 环境期间替换 Airflow 属性,请构建一个 environments.create 请求,并填充 Environment 资源的可选 airflowConfigOverrides 字段。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Composer