建立 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 Worker (composer.worker)。

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

步驟 2:基本設定

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

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

控制台

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

    前往「建立環境」

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

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

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

    位置是環境所在的區域。

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

  5. 在「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-3-airflow-2.11.1-build.20 \
    --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-3-airflow-2.11.1-build.20"
    },
    "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-3-airflow-2.11.1-build.20"
    }
    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

步驟 3:(選用) 啟用開發模式

開發模式環境可用於測試及開發 DAG,再發布至正式版群組。您可以在不使用開發模式環境時,將其休眠。

開發模式環境有下列限制:

  • 僅限搭載 Airflow 3 的 Managed Airflow (第 3 代)。
  • 僅限標準韌性模式。
  • 小型環境和小型環境預設提供的預設資源限制。您無法變更開發模式環境的 Airflow 元件數量或資源限制。

控制台

在「Create environment」(建立環境) 頁面中:

  1. 在「映像檔版本」中,選取 Airflow 3 的版本。
  2. 選取「開發模式」。

gcloud

建立環境時,--enable-development-mode 引數會啟用開發模式:

gcloud beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-3 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-development-mode

API

建立環境時,請在環境資源中,將 mode 欄位設為 DEVELOPMENT:

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

範例:


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

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
    "mode": "DEVELOPMENT"
}

Terraform

Terraform 尚未支援這項功能。

開發模式環境建立後,會處於執行中狀態。您隨時可以休眠或恢復。

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

如要指定環境的規模和效能設定,請選取環境大小和工作負載設定。

建立環境後,您可以變更所有效能和規模參數。

下列參數可控制規模和效能:

  • 環境規模。控管代管 Managed Airflow 基礎架構的效能參數,包括 Airflow 資料庫。如要執行大量 DAG 和工作,並提高基礎架構效能,建議您選取較大型的環境。舉例來說,環境越大,環境能以最短延遲時間處理的 Airflow 工作記錄項目數量就越多。

  • 工作負載設定。控管在環境 GKE 叢集中執行的 Airflow 元件規模和效能。

    • Airflow 排程器。剖析 DAG 定義檔案、依據排程間隔排定 DAG 執行作業,並將任務排入佇列來讓 Airflow 工作站執行。

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

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

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

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

    • Airflow 觸發條件。以非同步方式監控環境中的所有延後工作。如果環境中至少有一個觸發條件執行個體 (或高復原力環境中至少有兩個),即可在 DAG 中使用可延遲運算子。

      在 Managed Airflow (第 3 代) 中,Airflow 觸發器預設為啟用。如要建立沒有觸發者的環境,請將觸發者數量設為零。

    • Airflow DAG 處理器。處理 DAG 檔案並轉換為 DAG 物件。在 Managed Airflow (第 3 代) 中,排程器的這個部分會做為獨立的環境元件執行。

    • Airflow 網路伺服器。執行 Airflow 網頁介面,方便您監控、管理 DAG 並以視覺化方式呈現。

    • Airflow 工作站。執行 Airflow 排程器排定的任務。環境中的工作站數量下限和上限會依據佇列中的任務數量動態調整。

控制台

您可以為環境選取預設設定,選取預設設定後,系統會自動選取該預設設定的規模和成效參數。您也可以選取自訂預設設定,並為環境指定所有規模和效能參數。

如要選取環境的規模和效能設定,請在「Create environment」(建立環境) 頁面中執行下列操作:

  • 如要使用預先定義的值,請在「Environment resources」(環境資源) 區段中,按一下「Small」(小型)、「Medium」(中型)、「Large」(大型) 或「Extra Large」(超大型)。

  • 如要指定規模和效能參數的自訂值,請按照下列步驟操作:

    1. 在「環境資源」部分,按一下「自訂」。

    2. 在「排程器」部分中,設定要使用的排程器數量,以及 CPU、記憶體和儲存空間的資源分配。

    3. 在「觸發條件」部分,使用「觸發條件數量」欄位,輸入環境中的觸發條件數量。

      如果不想在 DAG 中使用可延遲運算子,請將觸發條件數量設為零。

      如果您為環境設定至少一個觸發條件,請使用「CPU」和「Memory」(記憶體) 欄位,設定觸發條件的資源分配。

    4. 在「DAG 處理器」部分,指定環境中的 DAG 處理器數量,以及每個 DAG 處理器的 CPU、記憶體和儲存空間數量。

      高復原力環境至少需要兩個 DAG 處理器。

    5. 在「Web server」部分,指定網路伺服器的 CPU 數量、記憶體容量和儲存空間。

    6. 在「工作站」部分,指定下列項目:

      • 環境中自動調度資源限制的工作站數量下限與上限。
      • worker 的 CPU、記憶體和儲存空間配置
    7. 在「核心基礎架構」部分,從「環境大小」下拉式選單中選取環境大小。

gcloud

建立環境時,下列引數會控管環境的規模和效能參數。

  • --environment-size 會指定環境大小。
  • --scheduler-count 指定排程器數量。
  • --scheduler-cpu 指定 Airflow 排程器的 CPU 數量。
  • --scheduler-memory 指定 Airflow 排程器的記憶體容量。
  • --scheduler-storage 指定 Airflow 排程器的磁碟空間量。

  • --triggerer-count 會指定環境中的 Airflow 觸發條件數量。這個旗標的預設值為 0。如要在 DAG 中使用可延遲運算子,就必須使用觸發器。

    • 如果是標準復原環境,請使用 0 到 10 之間的值。
    • 如果是高度彈性的環境,請使用 0 或介於 2 和 10 之間的值。
  • --triggerer-cpu 指定 Airflow 觸發器的 CPU 數量 (以 vCPU 為單位)。允許的值:0.5、0.75、1。預設值為 0.5。

  • --triggerer-memory 指定 Airflow 觸發器的記憶體容量,以 GB 為單位。預設值為 0.5。

    所需記憶體下限等於分配給觸發條件的 CPU 數量。最大值等於觸發條件 CPU 數量乘以 6.5。

    舉例來說,如果將 --triggerer-cpu 旗標設為 1,則 --triggerer-memory 的最小值為 1,最大值為 6.5。

  • --dag-processor-count 指定環境中的 DAG 處理器數量。

    高彈性環境至少需要兩個 DAG 處理器。

  • --dag-processor-cpu 指定 DAG 處理器的 CPU 數量。

  • --dag-processor-memory 指定 DAG 處理器的記憶體容量。

  • --dag-processor-storage 指定 DAG 處理器的磁碟空間量。

  • --web-server-cpu 指定 Airflow 網路伺服器的 CPU 數量。

  • --web-server-memory 指定 Airflow 網路伺服器的記憶體容量。

  • --web-server-storage 指定 Airflow 網頁伺服器的磁碟空間量。

  • --worker-cpu 會指定 Airflow 工作站的 CPU 數量。

  • --worker-memory 指定 Airflow worker 的記憶體容量。

  • --worker-storage 指定 Airflow 工作人員的磁碟空間量。

  • --min-workers 指定 Airflow worker 數量下限。環境的叢集至少會執行這個數量的 worker。

  • --max-workers 指定 Airflow worker 的數量上限。環境叢集最多會執行這個數量的 worker。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --environment-size ENVIRONMENT_SIZE \
    --scheduler-count SCHEDULER_COUNT \
    --scheduler-cpu SCHEDULER_CPU \
    --scheduler-memory SCHEDULER_MEMORY \
    --scheduler-storage SCHEDULER_STORAGE \
    --triggerer-count TRIGGERER_COUNT \
    --triggerer-cpu TRIGGERER_CPU \
    --triggerer-memory TRIGGERER_MEMORY \
    --dag-processor-count DAG_PROCESSOR_COUNT \
    --dag-processor-cpu DAG_PROCESSOR_CPU \
    --dag-processor-memory DAG_PROCESSOR_MEMORY \
    --dag-processor-storage DAG_PROCESSOR_STORAGE \
    --web-server-cpu WEB_SERVER_CPU \
    --web-server-memory WEB_SERVER_MEMORY \
    --web-server-storage WEB_SERVER_STORAGE \
    --worker-cpu WORKER_CPU \
    --worker-memory WORKER_MEMORY \
    --worker-storage WORKER_STORAGE \
    --min-workers WORKERS_MIN \
    --max-workers WORKERS_MAX

更改項目:

  • ENVIRONMENT_SIZE,small、medium、large、extra-large。
  • SCHEDULER_COUNT:排程器數量。
  • SCHEDULER_CPU:排程器的 CPU 數量,單位為 vCPU。
  • SCHEDULER_MEMORY:排程器的記憶體容量。
  • SCHEDULER_STORAGE,並提供排程器的磁碟大小。
  • TRIGGERER_COUNT:觸發條件數量。
  • TRIGGERER_CPU:觸發條件執行工具的 CPU 數量,單位為 vCPU。
  • TRIGGERER_MEMORY,以 GB 為單位。

  • DAG_PROCESSOR_COUNT 替換為 DAG 處理器數量。

  • 將 DAG_PROCESSOR_CPU 替換為 DAG 處理器的 CPU 數量。

  • DAG_PROCESSOR_MEMORY,以及 DAG 處理器的記憶體容量。

  • DAG_PROCESSOR_STORAGE,並提供 DAG 處理器的磁碟空間用量。

  • WEB_SERVER_CPU 網頁伺服器的 CPU 數量 (以 vCPU 為單位)。

  • WEB_SERVER_MEMORY,並提供網路伺服器的記憶體容量。

  • WEB_SERVER_STORAGE 替換為網路伺服器的記憶體容量。

  • WORKER_CPU:worker 的 CPU 數量,單位為 vCPU。

  • 將 WORKER_MEMORY 替換為 worker 的記憶體容量。

  • WORKER_STORAGE:worker 的磁碟大小。

  • WORKERS_MIN 替換為環境可執行的 Airflow worker 數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站就能處理負載也一樣。

  • WORKERS_MAX 替換為環境可執行的 Airflow worker 數量上限。即使需要更多工作站來處理負載,環境中的工作站數量也不會超過這個數字。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --environment-size small \
    --scheduler-count 1 \
    --scheduler-cpu 0.5 \
    --scheduler-memory 2.5GB \
    --scheduler-storage 2GB \
    --triggerer-count 1 \
    --triggerer-cpu 0.5 \
    --triggerer-memory 0.5GB \
    --dag-processor-count 1 \
    --dag-processor-cpu 0.5 \
    --dag-processor-memory 2GB \
    --dag-processor-storage 1GB \
    --web-server-cpu 1 \
    --web-server-memory 2.5GB \
    --web-server-storage 2GB \
    --worker-cpu 1 \
    --worker-memory 2GB \
    --worker-storage 2GB \
    --min-workers 2 \
    --max-workers 4

API

建立環境時,請在 Environment > EnvironmentConfig > WorkloadsConfig 資源中,指定環境規模和效能參數。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": SCHEDULER_CPU,
        "memoryGb": SCHEDULER_MEMORY,
        "storageGb": SCHEDULER_STORAGE,
        "count": SCHEDULER_COUNT
      },
      "triggerer": {
        "count": TRIGGERER_COUNT,
        "cpu": TRIGGERER_CPU,
        "memoryGb": TRIGGERER_MEMORY
      },
      "dagProcessor": {
        "count": DAG_PROCESSOR_COUNT,
        "cpu": DAG_PROCESSOR_CPU,
        "memoryGb": DAG_PROCESSOR_MEMORY,
        "storageGb": DAG_PROCESSOR_STORAGE
      },
      "webServer": {
        "cpu": WEB_SERVER_CPU,
        "memoryGb": WEB_SERVER_MEMORY,
        "storageGb": WEB_SERVER_STORAGE
      },
      "worker": {
        "cpu": WORKER_CPU,
        "memoryGb": WORKER_MEMORY,
        "storageGb": WORKER_STORAGE,
        "minCount": WORKERS_MIN,
        "maxCount": WORKERS_MAX
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE",
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

更改項目:

  • SCHEDULER_CPU,以 vCPU 為單位。
  • SCHEDULER_MEMORY:排程器的記憶體容量,以 GB 為單位。
  • SCHEDULER_STORAGE,以 GB 為單位,代表排程器的磁碟大小。
  • SCHEDULER_COUNT,並提供排程器數量。

  • TRIGGERER_COUNT:觸發條件數量。預設值為 0。如要在 DAG 中使用可延遲運算子,就必須啟用觸發條件。

    • 如果是標準韌性環境,請使用介於 0 至 10 之間的值。
    • 如果是具備高度彈性的環境,請使用 0 或介於 2 和 10 之間的值。

    如果使用至少一個觸發條件,您也必須指定 TRIGGERER_CPU 和 TRIGGERER_MEMORY 參數:

  • TRIGGERER_CPU 會指定觸發條件的 CPU 數量,單位為 vCPU。允許的值:0.5、0.75、1。

  • TRIGGERER_MEMORY 會設定觸發條件執行工具的記憶體容量。所需記憶體下限等於為觸發條件分配的 CPU 數量。最大允許值等於觸發條件 CPU 數量乘以 6.5。

    舉例來說,如果將 TRIGGERER_CPU 設為 1,則 TRIGGERER_MEMORY 的最小值為 1,最大值為 6.5。

  • DAG_PROCESSOR_COUNT 替換為 DAG 處理器數量。

    高復原力環境至少需要兩個 DAG 處理器。

  • DAG_PROCESSOR_CPU DAG 處理器的 CPU 數量,單位為 vCPU。

  • DAG_PROCESSOR_MEMORY,以 GB 為單位,表示 DAG 處理器的記憶體容量。

  • DAG_PROCESSOR_STORAGE:DAG 處理器的磁碟空間量,以 GB 為單位。

  • WEB_SERVER_CPU 替換為網路伺服器的 CPU 數量 (單位為 vCPU)。

  • WEB_SERVER_MEMORY,以 GB 為單位。

  • WEB_SERVER_STORAGE,其中包含網頁伺服器的磁碟大小 (以 GB 為單位)。

  • WORKER_CPU,以 vCPU 為單位。

  • WORKER_MEMORY:worker 的記憶體容量,以 GB 為單位。

  • WORKER_STORAGE,以 GB 為單位,表示 worker 的磁碟大小。

  • WORKERS_MIN 替換為環境可執行的 Airflow worker 數量下限。即使較少的工作站就能處理負載,環境中的工作站數量也不會超過這個數字。

  • WORKERS_MAX,環境可執行的 Airflow 工作站數量上限。即使需要更多工作站來處理負載,環境中的工作站數量也不會超過這個數字。

  • ENVIRONMENT_SIZE,環境大小為: ENVIRONMENT_SIZE_SMALL、ENVIRONMENT_SIZE_MEDIUM、 ENVIRONMENT_SIZE_LARGE、 ENVIRONMENT_SIZE_EXTRA_LARGE。

範例:

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

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": 2.5,
        "memoryGb": 2.5,
        "storageGb": 2,
        "count": 1
      },
      "triggerer": {
        "cpu": 0.5,
        "memoryGb": 0.5,
        "count": 1
      },
      "dagProcessor": {
        "count": 1,
        "cpu": 0.5,
        "memoryGb": 2,
        "storageGb": 1
      },
      "webServer": {
        "cpu": 1,
        "memoryGb": 2.5,
        "storageGb": 2
      },
      "worker": {
        "cpu": 1,
        "memoryGb": 2,
        "storageGb": 2,
        "minCount": 2,
        "maxCount": 4
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE_SMALL",
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

建立環境時,下列引數會控管環境的規模和效能參數。

  • 在 config 區塊中:

    • environment_size 欄位可控制環境大小。
  • 在 workloads_config 區塊中:

    • scheduler.cpu 欄位會指定 Airflow 排程器的 CPU 數量。
    • scheduler.memory_gb 欄位會指定 Airflow 排程器的記憶體容量。
    • scheduler.storage_gb 欄位會指定排程器的磁碟空間量。
    • scheduler.count 欄位會指定環境中的排程器數量。
    • triggerer.cpu 欄位會指定 Airflow 觸發條件的 CPU 數量。
    • triggerer.memory_gb 欄位會指定 Airflow 觸發條件的記憶體容量。
    • triggerer.count 欄位會指定環境中的觸發條件數量。

    • dag_processor.cpu 欄位會指定 DAG 處理器的 CPU 數量。

    • dag_processor.memory_gb 欄位用於指定 DAG 處理器的記憶體量。

    • dag_processor.storage_gb 欄位會指定 DAG 處理器的磁碟空間量。

    • dag_processor.count 欄位會指定 DAG 處理器數量。

      高復原力環境至少需要兩個 DAG 處理器。

    • web_server.cpu 欄位會指定 Airflow 網路伺服器的 CPU 數量。

    • web_server.memory_gb 欄位會指定 Airflow 網路伺服器的記憶體容量。

    • web_server.storage_gb 欄位會指定 Airflow 網路伺服器的磁碟空間量。

    • worker.cpu 欄位會指定 Airflow 工作站的 CPU 數量。

    • worker.memory_gb 欄位會指定 Airflow worker 的記憶體容量。

    • worker.storage_gb 欄位會指定 Airflow 工作人員的磁碟空間量。

    • worker.min_count 欄位會指定環境中的工作站數量下限。

    • worker.max_count 欄位會指定環境中的 worker 數量上限。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {

      scheduler {
        cpu = SCHEDULER_CPU
        memory_gb = SCHEDULER_MEMORY
        storage_gb = SCHEDULER_STORAGE
        count = SCHEDULER_COUNT
      }
      triggerer {
        count = TRIGGERER_COUNT
        cpu = TRIGGERER_CPU
        memory_gb = TRIGGERER_MEMORY
      }
      dag_processor {
        cpu = DAG_PROCESSOR_CPU
        memory_gb = DAG_PROCESSOR_MEMORY
        storage_gb = DAG_PROCESSOR_STORAGE
        count = DAG_PROCESSOR_COUNT
      }
      web_server {
        cpu = WEB_SERVER_CPU
        memory_gb = WEB_SERVER_MEMORY
        storage_gb = WEB_SERVER_STORAGE
      }
      worker {
        cpu = WORKER_CPU
        memory_gb = WORKER_MEMORY
        storage_gb = WORKER_STORAGE
        min_count = WORKERS_MIN
        max_count = WORKERS_MAX
      }
    }

    environment_size = "ENVIRONMENT_SIZE"

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

更改項目:

  • ENVIRONMENT_NAME 替換為環境名稱。
  • 將 LOCATION 替換為環境所在的區域。
  • SERVICE_ACCOUNT,並使用環境的服務帳戶。
  • SCHEDULER_CPU:排程器的 CPU 數量,單位為 vCPU。
  • SCHEDULER_MEMORY:排程器的記憶體容量,以 GB 為單位。
  • SCHEDULER_STORAGE,以 GB 為單位,代表排程器的磁碟大小。
  • SCHEDULER_COUNT 數量。
  • TRIGGERER_COUNT:觸發條件數量。
  • TRIGGERER_CPU:觸發條件執行工具的 CPU 數量,單位為 vCPU。
  • TRIGGERER_MEMORY:觸發器的記憶體容量,以 GB 為單位。

  • DAG_PROCESSOR_CPU:DAG 處理器的 CPU 數量,單位為 vCPU。

  • DAG_PROCESSOR_MEMORY,以 GB 為單位,表示 DAG 處理器的記憶體容量。

  • DAG_PROCESSOR_STORAGE,以 GB 為單位,表示 DAG 處理器的磁碟空間量。

  • DAG_PROCESSOR_COUNT:DAG 處理器數量。

  • WEB_SERVER_CPU 網頁伺服器的 CPU 數量 (以 vCPU 為單位)。

  • WEB_SERVER_MEMORY,以 GB 為單位。

  • WEB_SERVER_STORAGE,其中包含網頁伺服器的磁碟大小 (以 GB 為單位)。

  • WORKER_CPU,以 vCPU 為單位。

  • WORKER_MEMORY:worker 的記憶體容量,以 GB 為單位。

  • WORKER_STORAGE,以 GB 為單位,表示 worker 的磁碟大小。

  • WORKERS_MIN 替換為環境可執行的 Airflow worker 數量下限。即使較少的工作站就能處理負載,環境中的工作站數量也不會超過這個數字。

  • WORKERS_MAX,環境可執行的 Airflow 工作站數量上限。即使需要更多工作站來處理負載,環境中的工作站數量也不會超過這個數字。

  • ENVIRONMENT_SIZE,環境大小為: ENVIRONMENT_SIZE_SMALL、ENVIRONMENT_SIZE_MEDIUM、 ENVIRONMENT_SIZE_LARGE、 ENVIRONMENT_SIZE_EXTRA_LARGE。

範例:

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

  config {

    workloads_config {

      scheduler {
        cpu = 2.5
        memory_gb = 2.5
        storage_gb = 2
        count = 1
      }
      triggerer {
        count = 1
        cpu = 0.5
        memory_gb = 0.5
      }
      dag_processor {
        cpu = 1
        memory_gb = 2
        storage_gb = 1
        count = 1
    }
      web_server {
        cpu = 1
        memory_gb = 2.5
        storage_gb = 2
      }
      worker {
        cpu = 1
        memory_gb = 2
        storage_gb = 2
        min_count = 2
        max_count = 4
      }
    }

    environment_size = "ENVIRONMENT_SIZE_SMALL"

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

  }
}

步驟 5:(選用) 啟用高韌性模式

高韌性 (高可用性) Managed Airflow 環境採用內建的備援和容錯移轉機制,可降低環境受可用區故障和單點故障中斷影響的程度。

在 Managed Airflow (第 3 代) 中,高彈性環境適用於 Airflow 建構作業 composer-3-airflow-2.10.2-build.13 和 composer-3-airflow-2.9.3-build.20 以上版本。

高復原力環境是多可用區環境,至少會在所選區域的兩個可用區中執行。下列元件會在不同的可用區中執行:

worker 數量下限設為 2,環境的叢集會在可用區之間分配 worker 執行個體。如果可用區服務中斷,受影響的 worker 執行個體會在其他可用區重新排程。高強韌環境的 Cloud SQL 元件包含主要執行個體和待命執行個體,兩者會分散在不同可用區。

控制台

在「建立環境」頁面中:

  1. 在「Resilience mode」(復原模式) 區段中,選取「High resilience」(高復原力)。

  2. 在「環境資源」部分,選取高復原力環境的規模參數。高彈性環境需要兩個排程器、零個或兩到十個觸發器,以及至少兩個 worker:

    1. 按一下 [Custom] (自訂)。

    2. 在「Number of schedulers」(排程器數量) 下拉式選單中,選取 2。

    3. 在「Number of triggerers」(觸發者數量) 下拉式選單中,選取 0 或介於 2 和 10 之間的值。設定觸發條件的 CPU 和記憶體分配。

    4. 在「Minimum number of workers」(工作站數量下限) 下拉式選單中,依據所需的工作站數量選取「2」或更多。

  3. 在「網路設定」部分:

    1. 在「網路類型」中,選取「私人 IP 環境」。

    2. 視需要指定其他網路參數。

gcloud

建立環境時,--enable-high-resilience 引數會啟用高韌性模式。

設定下列引數:

  • --enable-high-resilience
  • --enable-private-environment,以及私人 IP 環境的其他網路參數 (如有需要)
  • --scheduler-count 至 2
  • --triggerer-count 至 0,或介於 2 和 10 之間的值。 如果您使用觸發條件,建立環境時也必須使用 --triggerer-cpu and--triggerer-memory` 旗標。

    如要進一步瞭解 --triggerer-count、--triggerer-cpu 和 --triggerer-memory 旗標,請參閱「設定環境規模和效能參數」。

  • --min-workers 到 2 以上

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-high-resilience \
    --enable-private-environment \
    --scheduler-count 2 \
    --triggerer-count 2 \
    --triggerer-cpu 0.5 \
    --triggerer-memory 0.5 \
    --min-workers 2

API

建立環境時,請在「Environment」>「EnvironmentConfig」EnvironmentConfig資源中啟用高復原力模式。

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

  }
}

範例:


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

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

  }
}

Terraform

建立環境時,config 區塊中的 resilience_mode 欄位會啟用高彈性模式。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "HIGH_RESILIENCE"

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }

  }
}

範例:

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

  config {

    resilience_mode = "HIGH_RESILIENCE"

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

步驟 6:(選用) 指定環境資料庫的可用區

建立標準復原環境時,您可以指定偏好的 Cloud SQL 可用區。

控制台

在「Create environment」(建立環境) 頁面中:

  1. 在「Advanced configuration」(進階設定) 部分,展開「Show advanced configuration」(顯示進階設定) 項目。

  2. 在「Airflow database zone」(Airflow 資料庫可用區) 清單中,選取偏好的 Cloud SQL 可用區。

gcloud

建立環境時,--cloud-sql-preferred-zone 引數會指定偏好的 Cloud SQL 可用區。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --cloud-sql-preferred-zone SQL_ZONE

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 可用區。這個可用區必須位於環境所在的區域。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --cloud-sql-preferred-zone us-central1-a

API

建立環境時,請在「Environment」>「DatabaseConfig」DatabaseConfig 資源中,指定偏好的 Cloud SQL 可用區。

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

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 可用區。這個可用區必須位於環境所在的區域。

範例:


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

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

Terraform

建立環境時,database_config 區塊中的 zone 欄位會指定偏好的 Cloud SQL 可用區。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    database_config {
      zone = "SQL_ZONE"
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

更改下列內容:

  • SQL_ZONE:偏好的 Cloud SQL 可用區。這個可用區必須位於環境所在的區域。

步驟 7:(選用) 設定環境的網路

您可以透過下列方式設定 Managed Airflow (第 3 代) 網路:

控制台

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

  2. 在「網路設定」部分,展開「顯示網路設定」項目。

  3. 如要將環境連線至虛擬私有雲網路,請在「Network attachment」(網路連結) 欄位中選取網路連結。您也可以建立新的網路連結。詳情請參閱「將環境連線至虛擬私有雲網路」。

  4. 如要建立私人 IP 環境,請在「Networking type」(網路類型) 區段中,選取「Private IP environment」(私人 IP 環境) 選項。

  5. 如要新增網路標記,請參閱「新增網路標記」一文。

gcloud

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

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

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

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

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

範例 (私人 IP 環境,具備已連結的虛擬私有雲網路)

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-private-environment \
    --network NETWORK_ID \
    --subnetwork SUBNETWORK_ID \

更改項目:

  • 將 NETWORK_ID 換成您的虛擬私有雲網路 ID。
  • 將 SUBNETWORK_ID 替換為虛擬私有雲子網路 ID。

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

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

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

控制台

在「Create environment」(建立環境) 頁面中:

  1. 找出「網路設定」部分。
  2. 在「Network tags」(網路標記) 欄位中,輸入環境的網路標記。

gcloud

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

  • --tags 指定套用至所有節點 VM 的網路標記清單 (以半形逗號分隔)。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --tags TAGS

更改項目:

  • TAGS,並以半形逗號分隔網路標記。

範例:

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

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

Airflow 網路伺服器存取參數與環境類型無關。您可以另外設定網頁伺服器存取權。舉例來說,私人 IP 環境仍可透過網際網路存取 Airflow UI。

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

控制台

在「建立環境」頁面中:

  1. 在「網路設定」部分,展開「顯示網路設定」項目。

  2. 在「網路伺服器網路存取控管」部分:

    • 如要允許所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 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-3-airflow-2.11.1-build.20 \
    --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-3-airflow-2.11.1-build.20 \
    --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
"
    }

}

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

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

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

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

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

控制台

在「Create environment」(建立環境) 頁面中:

  1. 在「Environment variables」(環境變數) 區段中,按一下「Add environment variable」(新增環境變數)。

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

  3. 在「Airflow configuration overrides」(Airflow 設定覆寫) 區段中,按一下「Add Airflow configuration override」(新增 Airflow 設定覆寫)。

  4. 輸入設定選項覆寫的「區段」、「鍵」和「值」。

    例如:

    區段 鍵 值
    webserver dag_orientation TB

gcloud

建立環境時,下列引數會控制環境變數和 Airflow 設定覆寫:

  • --env-variables 指定以逗號分隔的清單環境變數。

    變數名稱可包含大小寫字母、數字和底線,但開頭不得為數字。

  • --airflow-configs 指定以半形逗號分隔的鍵和值清單,用於覆寫 Airflow 設定。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --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-3-airflow-2.11.1-build.20 \
    --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」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
"
    }
  }
}

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

Managed Airflow (第 3 代) 的預設維護期間定義如下:

  • 所有時間均以環境所在區域的當地時區為準,但會忽略日光節約時間。
  • 週二、週三、週四和週五的維護期間為 00:00:00 至 02:00:00。
  • 週六、週日和週一的維護期間為 00:00:00 至 04:00:00。

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

控制台

在「Create environment」(建立環境) 頁面

  1. 找到「維護期間」部分。

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

  3. 設定「開始時間」、「天數」和「長度」,以便:

    • 每週至少分配 12 小時。

    • 您可以使用多個時段,但每個時段長度至少須為 4 小時。

    舉例來說,每週一、週三和週五各 4 小時,即可提供所需的時間。

gcloud

下列引數會定義維護期間參數:

  • --maintenance-window-start 可設定維護期間的開始時間。
  • --maintenance-window-end 會設定維護期間的結束時間。
  • --maintenance-window-recurrence 會設定維護期間週期。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --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 格式會指定在所選星期幾重複執行。

以下範例指定了 6 小時的維護期間,時間為週三、週六和週日的 01:00 至 07:00 (世界標準時間)。系統會忽略 2023 年 1 月 1 日。

gcloud composer environments create example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2.11.1-build.20 \
  --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

建立環境時,請在「Environment」(環境) >「EnvironmentConfig」(環境設定) 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 格式會指定在所選星期幾重複執行。

以下範例指定了 6 小時的維護期間,時間為週三、週六和週日的 01:00 至 07:00 (世界標準時間)。系統會忽略 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"
    }
  }
}

步驟 12. (選用) 資料歷程整合功能

資料歷程是 Knowledge Catalog 的功能,可以追蹤資料移動情形。

所有版本的 Managed Airflow (第 3 代) 都提供資料歷程整合功能。

如果符合下列條件,新的 Managed Airflow 環境會自動啟用資料歷程整合功能:

  • 專案已啟用 Data Lineage API。詳情請參閱 Knowledge Catalog 說明文件中的「啟用 Data Lineage API」。

  • Airflow 中未設定自訂歷程後端。

建立環境時,您可以停用資料歷程整合功能。舉例來說,如果您想覆寫自動行為,或選擇在建立環境後稍後啟用資料沿襲。

控制台

如要停用資料歷程整合功能,請在「建立環境」頁面中執行下列操作:

  1. 在「進階設定」部分,展開「顯示進階設定」。

  2. 在「Knowledge Catalog 歷程整合功能」選單中,選取「停用 Knowledge Catalog 歷程整合功能」。

gcloud

建立環境時,--disable-cloud-data-lineage-integration 引數會停用資料歷程整合功能。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --disable-cloud-data-lineage-integration

更改項目:

  • ENVIRONMENT_NAME 替換為環境名稱。
  • 將 LOCATION 替換為環境所在的區域。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --disable-cloud-data-lineage-integration

步驟 13:(選用) 設定資料加密 (CMEK)

根據預設,環境中的資料會以 Google 提供的金鑰加密。

如要使用客戶自行管理的加密金鑰 (CMEK) 加密環境中的資料,請按照「使用客戶自行管理的加密金鑰」中的操作說明進行。

步驟 14. (選用) 使用自訂環境的 bucket

建立環境時,Managed Airflow 會自動為環境建立 bucket。

或者,您也可以從專案中指定自訂 Cloud Storage bucket。環境會以與自動建立值區相同的方式使用這個值區。

如要使用自訂環境 bucket,請按照「使用自訂環境的 bucket」中的操作說明操作。

步驟 15:(選用) 設定資料庫保留

如果您在環境中啟用資料庫保留功能,Managed Airflow 會定期從 Airflow 資料庫中移除與 DAG 執行作業和使用者工作階段相關的記錄,這些記錄的保留時間超過指定時間範圍。系統一律會保留最新的 DAG 執行作業資訊。

資料庫保留功能預設為啟用。如要為新環境設定保留期限,或停用資料庫保留功能,請按照「設定資料庫保留政策」一文中的操作說明進行。您也可以稍後再設定資料庫保留期限。

步驟 16:(選用) 指定環境標籤

您可以為環境指派標籤,依據這些標籤細分已計費用。

控制台

在「Create environment」(建立環境) 頁面的「Labels」(標籤) 區段中:

  1. 按一下「新增標籤」。

  2. 在「Key」(鍵) 和「Value」(值) 欄位中,指定環境標籤的鍵/值組合。

gcloud

建立環境時,--labels 引數會指定以半形逗號分隔的鍵和值清單,其中包含環境標籤。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.20 \
    --service-account "SERVICE_ACCOUNT" \
    --labels LABELS

更改項目:

  • LABELS,並列出以半形逗號分隔的環境標籤 KEY=VALUE 配對。

範例:

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

}

後續步驟