建立 Managed Service for Apache Airflow 環境

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

本頁說明如何建立 Managed Airflow 環境。

事前準備

步驟 1:建立或選擇環境的服務帳戶

建立環境時,請指定服務帳戶。這個服務帳戶稱為環境的服務帳戶。環境會使用這個服務帳戶執行大部分作業。

環境的服務帳戶並非使用者帳戶。服務帳戶是一種特殊的帳戶,使用者通常並非真人,而是應用程式或虛擬機器 (VM) 執行個體。

環境的服務帳戶設定後即無法變更。

如果專案中還沒有 Managed Airflow 環境的服務帳戶,請建立一個。

如需在 Terraform 中為環境建立服務帳戶的擴充範例,請參閱「建立環境 (Terraform)」。

如要為環境建立新的服務帳戶,請按照下列步驟操作:

  1. 按照 Identity and Access Management 說明文件中的說明,建立新的服務帳戶。

  2. 按照 Identity and Access Management 說明文件所述,為其授予角色。必要角色為 Composer 工作站 (composer.worker)。

  3. 如果您的環境使用資源位置限制,或是從 Artifact Registry 存放區或私人存放區安裝 PyPI 套件,請將服務帳戶使用者 (iam.serviceAccountUser) 角色授予在環境中執行的使用者管理服務帳戶本身 (主體和資源都是同一個服務帳戶)。

  4. 如要存取 Google Cloud 專案中的其他資源,請將這些資源的存取權限授予這個服務帳戶。在大多數情況下,Composer Worker (composer.worker) 角色會提供這組必要權限。只有在 DAG 作業需要時,才為這個服務帳戶新增額外權限。

步驟 2:基本設定

這個步驟會在指定位置建立 Managed Airflow 環境,並使用預設參數。

本指南的其他步驟說明如何自訂及設定環境的不同面向。其餘步驟均為選用。

控制台

  1. 前往 Google Cloud 控制台的「建立環境」頁面。

    前往「Create environment」(建立環境)

  2. 在「Name」(名稱) 欄位中,輸入環境名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱用於建立環境的子元件,因此您必須提供有效的名稱,且該名稱也必須是有效的 Cloud Storage bucket 名稱。如要查看限制清單,請參閱「Bucket 命名規範」。

  3. 在「Location」(位置) 下拉式選單中,選擇環境的位置。

    位置是指環境所在的區域。

  4. 在「Image version」(映像檔版本) 下拉式清單中,選取具有所需 Airflow 版本的代管 Airflow 映像檔。

  5. 在「Node configuration」(節點設定) 區段的「Service account」(服務帳戶) 下拉式選單中,選取環境的服務帳戶。

    如果環境還沒有服務帳戶,請參閱「建立或選擇環境的服務帳戶」。

gcloud

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

更改項目:

  • ENVIRONMENT_NAME:環境名稱。

    名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱用於建立環境的子元件,因此您必須提供有效的名稱,且該名稱也必須是有效的 Cloud Storage bucket 名稱。如要查看限制清單,請參閱「Bucket 命名規範」。

  • 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.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 bucket 名稱。如要查看限制清單,請參閱「Bucket 命名規範」。

  • 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.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 bucket 名稱。如要查看限制清單,請參閱「Bucket 命名規範」。

  • 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.iam.gserviceaccount.com
"
    }
  }
}

步驟 3:(選用) 設定環境規模和效能參數

如要指定環境的規模和效能設定,請提供環境 GKE 叢集中的節點數量,並選取環境元件的機型。

控制台

在「建立環境」頁面中:

  1. 在「Node configuration」(節點設定) 部分:

    • 輸入「Node count」(節點數量)。

      節點數量是指環境叢集中的 Google Kubernetes Engine 節點數量。根據預設,環境有 3 個節點。

      建立環境後,您可以變更這個值。

    • 選擇節點的機型。

      節點的機型是叢集執行個體使用的 Compute Engine 機型。這個參數會決定環境的 CPU 數量和記憶體容量。預設機型為 n1-standard-1。

      如要在建立環境後變更這個值,您必須手動重新設定環境叢集。

    • 輸入磁碟大小。

      環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都有這個磁碟空間量。如果您預計在與環境 VM 同步的資料夾中儲存大量資料,請選取較大的磁碟大小。例如,在環境 bucket 的 /data 資料夾中。

      大小下限為 30 GB。預設大小為 100 GB。環境建立後,您就無法變更這項參數。

    • 選擇「排程器數量」。

      您的環境可以同時執行多個 Airflow 排程器。使用多個排程器將負載分散到多個排程器執行個體,以提升效能和穩定性。

      增加排程器數量不一定能提升 Airflow 效能。舉例來說,只使用一個排程器,效能可能比使用兩個排程器更好。如果未充分利用額外的排程器,就可能發生這種情況,導致環境資源消耗,卻無法提升整體效能。實際排程器效能取決於 Airflow worker 數量、環境中執行的 DAG 和任務數量,以及 Airflow 和環境的設定。

      建議先從兩個排程器開始,然後監控環境的效能。如果變更排程器數量,隨時可以將環境縮減回原本的排程器數量。

      如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件。

  2. 展開「網路、Airflow 設定覆寫與其他功能」項目。

  3. 在「Cloud SQL configuration」(Cloud SQL 設定) 區段中,選擇「Cloud SQL machine type」(Cloud SQL 機型)。

    這項參數會決定執行 Airflow 資料庫的 Cloud SQL 執行個體機型。預設 Cloud SQL 機型為 db-n1-standard-2。

  4. 在「Web server configuration」(網路伺服器設定) 區段中,選擇「Web server machine type」(網路伺服器機型)。

    這項參數會決定執行 Airflow 網路伺服器的 Compute Engine 執行個體機型。

    預設網路伺服器機型為 composer-n1-webserver-2。

gcloud

建立環境時,下列引數會控制環境規模和效能參數:

  • --node-count 會指定環境中的節點數量。

    節點數量是指環境叢集中的 Google Kubernetes Engine 節點數量。根據預設,環境有 3 個節點。

    建立環境後,您可以變更這個值。

  • --scheduler-count 指定環境中的排程器數量。

    您的環境可以同時執行多個 Airflow 排程器。使用多個排程器將負載分散到多個排程器執行個體,以提升效能和穩定性。

    增加排程器數量不一定能提升 Airflow 效能。舉例來說,只使用一個排程器,效能可能比使用兩個排程器更好。如果未充分利用額外的排程器,就可能發生這種情況,導致環境資源消耗,卻無法提升整體效能。實際排程器效能取決於 Airflow worker 數量、環境中執行的 DAG 和任務數量,以及 Airflow 和環境的設定。

    建議您先從兩個排程器開始,然後監控環境效能。如果變更排程器數量,隨時可以將環境縮減回原本的排程器數量。

    如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件。

  • --disk-size:指定環境 VM 的磁碟大小。

    環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都有這個磁碟空間量。如果您預期會在與環境 VM 同步處理的資料夾中儲存大量資料,請選取較大的磁碟大小。例如,在環境 bucket 的 /data 資料夾中。

    大小下限為 30 GB。預設大小為 100 GB。環境建立後,您就無法變更這項參數。

  • --machine-type 指定節點 VM 的機型。

    節點的機型是叢集執行個體使用的 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.iam.gserviceaccount.com
" \
    --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"
    }
  }
}

更改項目:

範例:


// 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.iam.gserviceaccount.com
"
    },
    "softwareConfig": {
      "schedulerCount": 1
    },
    "databaseConfig": {
      "machineType": "db-n1-standard-2"
    },
    "webServerConfig": {
      "machineType": "composer-n1-webserver-2"
    }
  }
}

Terraform

建立環境時,下列欄位會控制環境規模和效能參數:

  • node_count 區塊中的 node_config 會指定環境中的節點數量。

    節點數量是指環境叢集中的 Google Kubernetes Engine 節點數量。根據預設,環境有 3 個節點。

    環境建立後,您仍可變更這個值。

  • node_config 區塊中的 disk_size_gb 會指定環境 VM 的磁碟大小。

    環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都有這個磁碟空間量。如果預計要將大量資料儲存在與環境 VM 同步的資料夾中,請選取較大的磁碟。例如,在環境 bucket 的 /data 資料夾中。

    大小下限為 30 GB。預設大小為 100 GB。環境建立後,您就無法變更這項參數。

  • node_config 區塊中的 machine_type 會指定節點 VM 的機型。指定這個欄位時,也請在 zone 欄位中提供環境 VM 的 Compute Engine 可用區。

    節點的機型是叢集執行個體使用的 Compute Engine 機型。這個參數會決定環境的 CPU 數量和記憶體容量。預設機型為 n1-standard-1。

    如要在建立環境後變更這個值,您必須手動重新設定環境叢集。

  • machine_type 區塊中的 database_config 會指定 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:環境 VM 的磁碟大小 (以 GB 為單位)。
  • NODE_MACHINE_TYPE,並使用節點 VM 的機型。
  • NODE_ZONE,並將其替換為環境 VM 的 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.iam.gserviceaccount.com
"
    }

    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 對等互連)。在這項設定中,環境會使用虛擬私有雲對等互連進行連線。

    設定私人 IP 環境:

    1. 為專案設定私人 IP 環境的網路。
    2. 如本節所述,為私人 IP 環境指定其他參數。

    如要使用虛擬私有雲對接的私人 IP 環境,請注意下列事項:

    • 您的虛擬私有雲網路 ID
    • 您的虛擬私有雲子網路 ID
    • 虛擬私有雲子網路中的兩個次要 IP 範圍:

      • pod 的次要 IP 範圍
      • 服務的次要 IP 範圍
    • 環境元件的 IP 範圍:

      • GKE 控制層的 IP 範圍。
      • 網路伺服器 IP 範圍。
      • Cloud SQL 執行個體的 IP 範圍。
  • 如果是Shared VPC 環境,您必須為主專案進行額外的網路設定,然後在服務專案中建立公開或私人 IP 環境。請按照「設定 Shared VPC」頁面的操作說明進行。

    在 Shared VPC 環境中,您需要瞭解:

    • 主專案虛擬私有雲網路 ID
    • 主專案虛擬私有雲子網路 ID

    • 主專案虛擬私有雲子網路中的兩個次要 IP 範圍:

      • pod 的次要 IP 範圍
      • 服務的次要 IP 範圍

    建立公開 IP Shared VPC 環境時,仍須指定主專案虛擬私有雲網路、子網路,以及 Pod 和服務的次要 IP 範圍。

  • 如要建立 VPC SC 環境,您必須先建立服務範圍,然後在這個範圍內建立私有 IP 環境。請按照「設定 VPC Service Controls」中的操作說明進行。

環境的其他網路選項如下:

  • 私人使用的公開 IP 位址。如要使用更多 IP 位址,您的環境可以私下使用特定公開 IP 位址範圍,做為 Pod 和服務的內部子網路 IP 位址範圍。
  • 授權網路。如要使用 HTTPS 存取私人 IP 環境的控制層,可以使用授權網路指定可執行這項操作的 CIDR 範圍。
  • IP 偽裝代理程式。使用具備 IP 偽裝代理程式的環境,即可在環境的網路設定中,使用多對一 IP 位址轉譯。如要進一步瞭解如何使用 IP 偽裝代理程式建立環境,請參閱「啟用 IP 偽裝代理程式」。

控制台

如要建立私人 IP 環境,請按照下列步驟操作:

  1. 請確認網路已針對要建立的環境類型完成設定。

  2. 展開「網路、Airflow 設定覆寫與其他功能」項目。

  3. 在「網路設定」部分,勾選「啟用虛擬私有雲原生 (使用別名 IP)」核取方塊。

  4. 在「網路」下拉式選單中,選取虛擬私有雲網路 ID。

  5. 在「Subnetwork」(子網路) 下拉式選單中,選取虛擬私有雲子網路 ID。

  6. 在「Pod IP Address Allocation」(Pod IP 位址分配) 部分,指定 Pod 的次要 IP 範圍。您可以使用虛擬私有雲網路中的現有次要範圍,或以 CIDR 標記法指定新範圍。

  7. 在「Service IP Address Allocation」(Service IP 位址分配) 區段中,指定 Service 的次要 IP 範圍。您可以使用虛擬私有雲網路中的現有次要範圍,或以 CIDR 標記法指定新的範圍。

  8. 在「私人 IP」部分,勾選「啟用私人 IP」核取方塊。

  9. 在「GKE cluster master private IP」(GKE 叢集主要執行個體私人 IP) 區段中,指定 GKE 控制層的 IP 範圍:

    • 如要使用環境所在區域的預設 IP 範圍,請選取「Default IP range」(預設 IP 範圍)。

    • 如要指定自訂 IP 範圍,請選取「Custom IP range」(自訂 IP 範圍),然後在「GKE cluster master private IP」(GKE 叢集主要執行個體私人 IP) 欄位中,以 CIDR 標記法輸入範圍。

  10. 選取 GKE 控制層的存取層級。控制層有兩個端點。一個是私人端點,供叢集節點和 VM 使用。另一個端點是公開端點。您可以指定公開端點的存取層級:

    • 如要允許從已授權的網路存取公開端點,請勾選「使用外部 IP 位址存取主要端點」核取方塊。

      使用這個選項會將控制層的存取層級設為「已啟用公開端點存取權,已啟用授權網路」。這樣一來,只有授權網路能存取控制層,且存取權會受到限制。根據預設,系統不會指定任何來源 IP 位址。您可以將授權網路新增至叢集。

    • 如要禁止從授權網路存取公開端點,請取消勾選「使用外部 IP 位址存取主節點端點」核取方塊。

      使用這個選項,會將控制層的存取層級設為「已停用公開端點存取權」。這樣一來,控制層就無法存取網際網路。

  11. 在「Web Server private IP」(網路伺服器私人 IP) 部分,指定 Airflow 網路伺服器執行個體的 IP 範圍。

  12. 在「Cloud SQL private IP」(Cloud SQL 私人 IP) 區段中,指定 Cloud SQL 執行個體的 IP 範圍。

gcloud

請務必根據要建立的環境類型設定網路。

建立環境時,下列引數會控管網路參數。如果省略參數,系統會使用預設值。

  • --enable-private-environment 會啟用私人 IP 環境。

  • --enable-ip-alias 會使用別名 IP 位址啟用虛擬私有雲原生。

    使用 --enable-private-environment 或為 Pod 和服務設定次要範圍時,必須提供這個參數。

  • --network 指定虛擬私有雲網路 ID。

  • --subnetwork 指定虛擬私有雲子網路 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 控制層的存取層級。控制層有兩個端點。一個是私人端點,供叢集節點和 VM 使用。另一個端點是公開端點。您可以指定公開端點的存取層級:

    • 如要允許從已授權的網路存取公開端點,請省略 --enable-private-endpoint 引數。

      使用這個選項會將控制層的存取層級設為「已啟用公開端點存取權,已啟用授權網路」。這樣一來,只有授權網路能存取控制層,且存取權會受到限制。根據預設,系統不會指定任何來源 IP 位址。您可以將授權網路新增至叢集。

    • 如要禁止從已授權的網路存取公開端點,請指定 --enable-private-endpoint 引數。

      使用這個選項,會將控制層的存取層級設為「已停用公開端點存取權」。這樣一來,控制層就無法存取網際網路。

  • --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 換成您的虛擬私有雲網路 ID。
  • 將 SUBNETWORK_ID 替換為虛擬私有雲子網路 ID。

  • PODS_RANGE:Pod 的次要範圍。

  • SERVICES_RANGE:服務的次要範圍。

  • CONTROL_PLANE_RANGE,並使用 GKE 控制層的次要範圍。

  • WEB_SERVER_RANGE:Airflow 網路伺服器執行個體的次要範圍。

  • SQL_RANGE,其中包含 Cloud SQL 執行個體的範圍。

步驟 5:(選用) 新增網路標記

網路標記會套用至環境叢集中的所有節點 VM。標記可用來識別網路防火牆的有效來源或目標。清單中的各個標記均須符合 RFC 1035 標準。

舉例來說,如果您打算使用防火牆規則限制私人 IP 環境的流量,可以新增網路標記。

控制台

在「建立環境」頁面中:

  1. 找到「節點設定」部分。
  2. 在「Tags」(標記) 欄位中,指定節點 VM 的執行個體標記。

gcloud

建立環境時,下列引數會控管網路標記:

  • --tags 指定套用至所有節點 VM 的網路標記清單 (以半形逗號分隔)。
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

建立環境時,請在「Environment」(環境) >「EnvironmentConfig」(環境設定)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 欄位會指定套用至所有節點 VM 的網路標記清單,並以半形逗號分隔。
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
"
    }
  }
}

步驟 6:(選用) 設定網路伺服器網路存取權

Airflow 網路伺服器存取參數與環境類型無關。您可以改為個別設定網路伺服器存取權。舉例來說,私人 IP 環境仍可從網際網路存取 Airflow UI。

您無法使用私人 IP 位址設定允許的 IP 範圍。

控制台

在「建立環境」頁面的「網頁伺服器設定」部分:

  • 如要允許所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」。

  • 如要僅允許特定 IP 範圍存取,請選取「僅允許來自特定 IP 位址的存取要求」。在「IP range」(IP 範圍) 欄位中,以 CIDR 標記法指定 IP 範圍。在「Description」(說明) 欄位中,視需要輸入這個範圍的說明。如要指定多個範圍,請按一下「新增 IP 範圍」。

  • 如要禁止所有 IP 位址存取,請選取「Allow access only from specific IP addresses」(僅允許從特定 IP 位址存取),然後按一下空白範圍項目旁的「Delete item」(刪除項目)。

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,並以 CIDR 標記法提供可存取 Airflow UI 的 IP 範圍。
  • 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.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

建立環境時,請在「Environment」>「EnvironmentConfig」EnvironmentConfig資源中,指定網路伺服器存取參數。

  • 如要允許所有 IP 位址存取 Airflow 網路伺服器,請省略 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,並以 CIDR 標記法提供可存取 Airflow UI 的 IP 範圍。
  • 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,並以 CIDR 標記法提供可存取 Airflow UI 的 IP 範圍。
  • 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
"
    }

}

步驟 7:(選用) 指定 Airflow 設定覆寫和環境變數

建立環境時,您可以設定 Airflow 覆寫設定和環境變數。或者,您也可以在環境建立後再執行這項操作。

部分 Airflow 設定選項遭到封鎖,因此無法覆寫。

如需可用的 Airflow 設定選項清單,請參閱 Airflow 2 的設定參考資料和 Airflow 1.10.*

如要指定 Airflow 設定覆寫和環境變數,請按照下列步驟操作:

控制台

在「建立環境」頁面中:

  1. 展開「網路、Airflow 設定覆寫與其他功能」項目。

  2. 在「環境變數」部分,按一下「新增環境變數」。

  3. 輸入環境變數的「Name」(名稱) 和「Value」(值)。

  4. 在「Airflow configuration overrides」(Airflow 設定覆寫) 區段中,按一下「Add Airflow configuration override」(新增 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.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

建立環境時,請在 Environment > 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
"
    }
  }
}

步驟 8:(選用) 指定維護期間

如果您使用Google Cloud 控制台、API 或 Terraform 建立 Managed Airflow (舊版第 1 代) 環境,系統預設不會定義維護期間。建議您為新環境和現有環境指定維護期間。

如果您使用 gcloud CLI 建立環境,環境的預設維護期間為每週五、六、日的 00:00:00 至 04:00:00 (GMT)。

如要為環境指定自訂維護期間,請按照下列步驟操作:

控制台

在「建立環境」頁面中:

  1. 展開「網路、Airflow 設定覆寫與其他功能」項目。

  2. 在「Maintenance windows」(維護期間) 區段中,勾選「Set custom time for maintenance windows」(自訂維護期間的時間) 核取方塊。

  3. 在「Timezone」(時區) 下拉式選單中,選擇維護時段的時區。

  4. 設定「Start time」(開始時間)、「Days」(天數) 和「Length」(長度),讓指定時間表的合併時間在 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 設定維護時段的重複規則。Managed Airflow 支援兩種格式:

  • FREQ=DAILY 格式指定每日重複。

  • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複執行。

以下範例指定維護期間為星期三、星期六和星期日,時間為 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.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 設定維護期間的週期。Managed Airflow 支援兩種格式:

  • FREQ=DAILY 格式指定每日重複。

  • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複執行。

以下範例指定在週三、週六和週日的 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 設定維護期間的週期。Managed Airflow 支援兩種格式:

    • FREQ=DAILY 格式指定每日重複。
    • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 格式會指定在所選星期幾重複執行。

以下範例指定在週三、週六和週日的 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. 在「Key」(鍵) 和「Value」(值) 欄位中,指定環境標籤的鍵/值組合。

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

}

步驟 11:(選用) 設定其他參數

其他參數包括:

  • 環境節點的可用區

    要部署叢集節點的 Compute Engine 可用區。在這個參數中,您可以選取環境位置中的特定可用區。

    根據預設,系統會自動選取隨機可用區。

  • 個 OAuth 範圍

    OAuth 範圍是一組 Google API 範圍,可供所有節點 VM 使用。如為空白,則預設為 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. 在「Node configuration」(節點設定) 部分:

    • 在「Zone」(可用區) 下拉式選單中,選取環境節點的可用區。

      可用區一經設定即無法變更。

    • 在「OAuth Scopes」(OAuth 範圍) 欄位中,指定節點 VM 的 OAuth 範圍。

      OAuth 範圍一經設定即無法變更。

      如要指定多個 OAuth 範圍,請提供以半形逗號分隔的值清單。在指定範圍清單中加入 https://www.googleapis.com/auth/cloud-platform。

    • 在「Python version」(Python 版本) 欄位中,選擇 Python 版本。

      Python 版本一經設定即無法變更。

gcloud

建立環境時,下列引數會控制環境的各種參數:

  • --zone 指定環境 VM 的 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.iam.gserviceaccount.com
" \
    --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.iam.gserviceaccount.com
"
    },
    "softwareConfig": {
        "pythonVersion": "3"
    }
  }
}

Terraform

建立環境時,下列欄位會控制環境的各種參數:

  • node_config 區塊中的 zone 欄位會指定環境 VM 的 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.iam.gserviceaccount.com
"
    }
    software_config {
      python_version = "3"
    }
  }
}

步驟 12. (選用) 強制使用 Beta 版 API

即使環境沒有任何預先發布版功能,您也可以明確讓環境使用 Beta 版 Cloud Composer API。如果這麼做,系統會使用v1beta1服務端點建立環境。

控制台

在「建立環境」頁面中:

  1. 展開「網路、Airflow 設定覆寫與其他功能」項目。

  2. 在「Beta API」部分,勾選「Enforce the usage of Beta API」核取方塊。

gcloud

使用 gcloud beta composer 指令建立環境。

API

使用 v1beta1 服務端點建立環境。

Terraform

Managed Airflow 的 Terraform 供應商預設會使用 Beta 版 API。

後續步驟