建立環境

本頁面說明如何建立 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 主控台中可能會顯示其他 Google 擁有的服務帳戶。如要瞭解可用的類型和角色,請參閱服務帳戶一文。

  • 如果您的自訂服務帳戶在執行工作時必須存取 Google Cloud Platform 專案中的其他資源,您可以為服務帳戶新增必要的權限,或是提供相關憑證做為 Airflow 連結,然後在運算子中參照該連結。

Beta 版功能

  • 您必須在 GCP 主控台中啟用 Beta 版功能支援,才能在環境中使用 Beta 版功能。

  • 如果您建立的環境使用 Beta 版功能,您也必須使用 Beta 介面更新或刪除環境。詳情請參閱 Beta 版功能支援一文。

  • 共用虛擬私人雲端:搭配共用虛擬私人雲端使用 Cloud Composer 有特定的網路要求。詳情請參閱設定共用虛擬私人雲端一文。

  • 私人 IP:建立私人 IP Cloud Composer 環境有特定的網路和對等互連要求。詳情請參閱設定私人 IP 一文。

建立新環境

如要建立 Cloud Composer 環境,請按照下列步驟操作:

主控台

  1. 在 Google Cloud Platform 主控台中開啟「Create Environment」(建立環境) 頁面。

    開啟「Create Environment」(建立環境) 頁面

  2. 為環境輸入名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 63 個小寫英文字母、數字或連字號,但結尾不得為連字號

  3. 在「Node configuration」(節點設定) 底下,指定 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。
    磁碟大小 用於節點 VM 執行個體的磁碟大小,以 GB 為單位。大小下限為 20 GB,預設大小為 100 GB。
    OAuth 範圍 供所有節點 VM 執行個體使用的一組 Google API 範圍。預設值為 https://www.googleapis.com/auth/cloud-platform,且必須包含在指定範圍清單中。
    服務帳戶 要由節點 VM 執行個體使用的 Google Cloud Platform 服務帳戶。如未指定,則會使用預設 Compute Engine 服務帳戶。
    標記 套用到所有節點 VM 執行個體的執行個體標記清單。標記可用於識別網路防火牆的有效來源或目標。清單中的每個標記都必須符合 RFC 1035
    映像檔版本 要用於環境的 Cloud Composer 版本 (包含 Cloud Composer 和 Airflow 版本)。如需預設版本資訊,請參閱版本清單一文。
    Python 版本 要用於環境的 Python 版本。支援的版本為 Python 2 和 Python 3。預設版本為 2。
  4. 在「Network configuration」(網路設定) 底下,指定 Google Kubernetes Engine 叢集的網路設定。如未指定,則會採用預設設定。

    設定 說明
    網路 可供環境進行機器通訊的虛擬私人雲端網路。預設值為 [Networks in this project] (這項專案中的網路)。如果是共用虛擬私人雲端,請選擇 [Networks shared from host project] (透過主專案共用的網路)。
    網路 ID 用於機器通訊的虛擬私人雲端網路 ID。指定子網路時必須提供網路 ID。如未指定,則會使用預設網路。
    子網路 ID 用於機器通訊的 Compute Engine 子網路 ID
    私人 IP 環境 啟用私人 IP Cloud Composer 環境。預設為停用。
    透過外部 IP 位址存取 GKE 主要執行個體 啟用 GKE 叢集主要執行個體的公開存取權。需要私人 IP 環境。
    GKE 主要執行個體 IP 範圍 主要執行個體虛擬私人雲端的私人 RFC 1918 範圍。此為私人 IP 環境的必要設定。
  5. (選用) 如要變更或覆寫 Airflow 設定檔 (airflow.cfg) 中的預設值,請按一下 [Add Airflow configuration property] (新增 Airflow 設定屬性)。

  6. (選用) 如要設定環境變數,請按一下 [Add environment variable] (新增環境變數)。請參閱環境變數一文瞭解需求條件。

  7. (選用) 如要新增標籤,請按一下 [Add labels] (新增標籤)。

    標籤鍵和標籤值只能包含字母、數字、破折號和底線。標籤鍵開頭必須是字母或數字。

  8. 按一下 [Create] (建立)。

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-configs 是 Airflow 設定覆寫的 SECTION_NAME-PROPERTY_NAME=VALUE 清單。區段名稱和屬性名稱必須以連字號分隔。
  • disk-size 是用於節點 VM 的磁碟大小,以 GB 為單位。大小下限為 20 GB,預設磁碟大小為 100 GB。
  • env-variables 是針對 Airflow 排程器、工作站和網路伺服器程序設定的 NAME=VALUE 環境變數清單。
  • enable-private-environment 會啟用私人 IP Cloud Composer 環境
    • enable-private-endpoint 會啟用 GKE 叢集主要執行個體的公開存取權。需要 enable-private-environment
    • master-ipv4-cidr 是主要執行個體虛擬私人雲端的私人 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 是用於機器通訊的虛擬私人雲端網路。指定子網路時必須提供這個網路。如未指定,則會使用預設網路。使用共用虛擬私人雲端時,您必須以 projects/HOST_PROJECT_ID/global/networks/NETWORK_ID 格式提供相對資源名稱。如需共用虛擬私人雲端子網路的需求條件,請參閱下方的 subnetwork 部分。
  • node-count 是用於執行環境的 GKE 節點數。預設節點數為 3 個。節點數是環境建立完成後唯一可變更的 Google Kubernetes Engine 叢集設定。
  • oauth-scopes 是可供所有節點 VM 使用的一組 Google API 範圍。預設 OAuth 範圍為 https://www.googleapis.com/auth/cloud-platform,且必須包含在指定範圍清單中 (如有指定)。
  • python-version 是要用於環境的 Python 版本。支援的版本為 Python 2 和 Python 3。預設版本為 2。
  • subnetwork 是環境連結的 Compute Engine 子網路。使用 gcloud 建立共用虛擬私人雲端環境時,您必須使用次要 IP 範圍 composer-podscomposer-services。您可以使用 Cloud Composer API 指定不同的次要範圍名稱。子網路名稱也必須以 projects/HOST_PROJECT_ID/regions/REGION_ID/subnetworks/SUBNET_ID 格式指定為相對資源名稱。共用虛擬私人雲端目前處於 Beta 版階段,且需要 gcloud beta composer environments create 指令。
  • service-account 是要由節點 VM 執行個體使用的 Google Cloud Platform 服務帳戶。如未指定,則會使用預設 Compute Engine 服務帳戶。
  • tags 是要套用到所有節點 VM 的執行個體標記清單。標記可用於識別網路防火牆的有效來源或目標。清單中的每個標記都必須符合 RFC 1035

下列範例會在 us-central1 地區中,建立執行最新受支援 Cloud Composer 映像檔版本的環境,該環境使用 n1-standard-2 機器類型,並具有 beta 環境標籤:

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  

以下共用虛擬私人雲端範例會在主專案中建立環境。這個環境位在 us-central1 地區中,使用 n1-standard-2 機器類型,並具有 beta 環境標籤:

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. 如果您尚未註冊 SendGrid,請透過 Google Cloud Platform 主控台進行註冊,然後建立 API 金鑰。Google Cloud Platform 開發人員在一開始可享有每月 12,000 封免費電子郵件的配額。

  2. 在 GCP 主控台中,開啟「Create Environment」(建立環境) 頁面。

    開啟「Create Environment」(建立環境) 頁面

  3. 在「Node configuration」(節點設定) 底下,按一下 [Add environment variable] (新增環境變數)。

  4. 輸入下列環境變數:

    姓名
    SENDGRID_MAIL_FROM 寄件者電子郵件地址,例如 noreply-composer@
    SENDGRID_API_KEY 您的 SendGrid API 金鑰。
  5. 按照下列步驟測試 SendGrid 設定:

    1. 建立使用 EmailOperator 的測試 DAG。
    2. 將 DAG 上傳到環境,並檢查 EmailOperator 工作是否成功。
    3. 使用您的 SendGrid 憑證登入 SendGrid。
    4. 在 SendGrid UI 中,前往「Activity」頁面。
    5. 在清單中搜尋電子郵件。您會看到 SendGrid 處理並發送了電子郵件。
    6. 如果 SendGrid 未處理及發送電子郵件,請執行下列操作:
      • 檢查您的 Sendgrid 設定。
      • 確認 SENDGRID_MAIL_FROMSENDGRID_API_KEY 環境變數皆正確無誤。
      • 檢查電子郵件用戶端的垃圾郵件篩選器。

設定第三方 SMTP 服務

如要透過第三方 SMTP 服務傳送電子郵件,您必須覆寫 email_backend Airflow 設定

  1. 開啟「Create Environment」(建立環境) 頁面。

    開啟「Create Environment」(建立環境) 頁面

  2. 在「Airflow configuration overrides」(Airflow 設定覆寫) 底下,按一下 [Add Airflow configuration override] (新增 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 設定屬性。部分屬性會遭到封鎖

主控台

  1. 開啟「Create Environment」(建立環境) 頁面。

    開啟「Create Environment」(建立環境) 頁面

  2. 在「Airflow configuration overrides」(Airflow 設定覆寫) 底下,按一下 [Add Airflow configuration override] (新增 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