建立 Cloud Composer 環境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何建立 Cloud Composer 環境。

事前準備

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

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

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

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

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

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

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

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

  2. 請按照 Identity and Access Management 說明文件中的說明授予角色。必要角色為 Composer Worker (composer.worker)。

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

步驟 2:基本設定

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

主控台

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

    前往「建立環境」

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

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

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

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

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

  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 命名規範」。

  • LOCATION 替換為環境的區域。

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

  • SERVICE_ACCOUNT,並使用環境的服務帳戶。

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.10 \
    --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 命名規範」。

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

  • 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.10.5-build.10"
    },
    "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 命名規範」。

  • LOCATION 替換為環境的區域。

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

  • IMAGE_VERSION 改為 Cloud Composer 映像檔的名稱。

  • 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.10.5-build.10"
    }
    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

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

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

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

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

  • 環境大小。控管代管 Cloud Composer 基礎架構的效能參數,包括 Airflow 資料庫。如要執行大量 DAG 和工作,並提高基礎架構效能,請考慮選取較大的環境規模。舉例來說,環境越大,環境可處理的 Airflow 工作記錄項目就越多,延遲時間也越短。

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

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

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

      增加排程器數量不一定能提升 Airflow 效能。舉例來說,只有一個排程器可能比兩個排程器效能更好。如果額外的排程器未獲得善用,就會發生這種情況,進而耗用環境資源,但對整體效能沒有貢獻。實際的排程器效能取決於 Airflow 工作站數量、環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。

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

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

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

      在 Cloud Composer 3 中,Airflow 觸發器預設為啟用狀態。如要建立沒有觸發者的環境,請將觸發者數量設為零。

    • Airflow DAG 處理器。處理 DAG 檔案,並將其轉換為 DAG 物件。在 Cloud Composer 3 中,排程器的這部分會做為獨立的環境元件執行。

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

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

主控台

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

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

  • 如要使用預先定義的值,請在「環境資源」部分中,按一下「小」、「中」或「大」

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

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

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

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

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

      如果為環境設定至少一個觸發器,請使用「CPU」和「記憶體」欄位,為觸發器設定資源分配。

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

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

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

    6. 在「工作站」部分,指定:

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

gcloud

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

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

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

    • 如果是標準復原環境,請使用介於 010 之間的值。
    • 對於具備高度彈性的環境,請使用 0 或介於 210 之間的值。
  • --triggerer-cpu 會以 vCPU 為單位,指定 Airflow 觸發器的 CPU 數量。允許的值:0.50.751。預設值為 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-storage 指定 Airflow 工作站的磁碟空間大小。

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

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.10 \
    --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,搭配 smallmediumlarge
  • SCHEDULER_COUNT,並提供排程器數量。
  • SCHEDULER_CPU,其中包含排程器的 CPU 數量 (以 vCPU 為單位)。
  • SCHEDULER_MEMORY,其中包含排程器的記憶體量。
  • SCHEDULER_STORAGE,並指定排程器的磁碟大小。
  • TRIGGERER_COUNT,代表觸發條件數量。
  • TRIGGERER_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,以 vCPU 為單位,代表網路伺服器的 CPU 數量。

  • WEB_SERVER_MEMORY,其中包含網路伺服器的記憶體量。

  • WEB_SERVER_STORAGE,其中包含網路伺服器的記憶體量。

  • WORKER_CPU,單位為 vCPU。

  • WORKER_MEMORY,並提供工作站的記憶體量。

  • WORKER_STORAGE,並指定工作站的磁碟大小。

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

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

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.10 \
    --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」(環境設定)EnvironmentConfig >「WorkloadsConfig」(工作負載設定)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,其中包含排程器的 CPU 數量 (以 vCPU 為單位)。
  • SCHEDULER_MEMORY,單位為 GB。
  • SCHEDULER_STORAGE,單位為 GB。
  • SCHEDULER_COUNT,並提供排程器數量。

  • TRIGGERER_COUNT,預設值為 0。如要在 DAG 中使用可延遲運算子,就必須使用觸發器。

    • 如果是標準復原環境,請使用介於 010 之間的值。
    • 對於具備高度彈性的環境,請使用 0 或介於 210 之間的值。

    如果使用至少一個觸發器,您也必須指定 TRIGGERER_CPUTRIGGERER_MEMORY 參數:

  • TRIGGERER_CPU 會以 vCPU 為單位,指定觸發器的 CPU 數量。允許的值:0.50.751

  • 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 是 DAG 處理器的記憶體量,以 GB 為單位。

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

  • WEB_SERVER_CPU,以 vCPU 為單位,代表網路伺服器的 CPU 數量。

  • WEB_SERVER_MEMORY 是網路伺服器的記憶體量,以 GB 為單位。

  • WEB_SERVER_STORAGE,單位為 GB。

  • WORKER_CPU,單位為 vCPU。

  • WORKER_MEMORY,以 GB 為單位。

  • WORKER_STORAGE,單位為 GB。

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

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

  • ENVIRONMENT_SIZE,其中 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_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.storage_gb 欄位會指定 Airflow 工作站的磁碟空間量。

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

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

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,單位為 vCPU。
  • TRIGGERER_MEMORY,單位為 GB,代表觸發器的記憶體量。

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

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

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

  • DAG_PROCESSOR_COUNT,其中包含 DAG 處理器數量。

  • WEB_SERVER_CPU,以 vCPU 為單位,代表網路伺服器的 CPU 數量。

  • WEB_SERVER_MEMORY 是網路伺服器的記憶體量,以 GB 為單位。

  • WEB_SERVER_STORAGE,單位為 GB。

  • WORKER_CPU,單位為 vCPU。

  • WORKER_MEMORY,以 GB 為單位。

  • WORKER_STORAGE,單位為 GB。

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

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

  • ENVIRONMENT_SIZE,其中 ENVIRONMENT_SIZE_SMALLENVIRONMENT_SIZE_MEDIUMENVIRONMENT_SIZE_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
"
    }

  }
}

步驟 4:(選用) 啟用高復原力模式

高韌性 (高可用性) Cloud Composer 環境採用內建的備援和容錯移轉機制,可降低環境受可用區故障和單點故障停機影響的機率。

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

工作站數量下限設為兩個,環境的叢集會在各個區域之間分配工作站執行個體。如果發生區域服務中斷,受影響的工作人員執行個體會重新排定至其他區域。高彈性環境的 Cloud SQL 元件包含主要執行個體和待命執行個體,兩者會分散在不同區域。

主控台

在「建立環境」頁面中:

  1. 在「復原模式」部分,選取「高復原力」

  2. 在「環境資源」部分,選取高復原力環境的規模參數。高復原力環境需要兩個排程器、零個或介於兩個和十個之間的觸發器,以及至少兩個工作站:

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

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

    3. 在「觸發器數量」下拉式清單中,選取 0、 或介於 210 之間的值。為觸發器設定 CPU記憶體分配量。

    4. 在「工作站數量下限」下拉式清單中,選取 2 或更多,視所需工作站數量而定。

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

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

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

gcloud

建立環境時,--enable-high-resilience 引數會啟用高復原力模式。

設定下列引數:

  • --enable-high-resilience
  • --enable-private-environment,以及私人 IP 環境的其他網路參數 (如有需要)
  • --scheduler-count2
  • --triggerer-count0 之間的值,或是介於 210 之間的值。如果您使用觸發器,建立環境時也必須使用 --triggerer-cpu and--triggerer-memory` 標記。

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

  • --min-workers2 以上

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

步驟 5:(選用) 為環境的資料庫指定區域

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

主控台

在「建立環境」頁面中:

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

  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.10.5-build.10 \
    --service-account "SERVICE_ACCOUNT" \
    --cloud-sql-preferred-zone SQL_ZONE

更改下列內容:

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

範例:

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

API

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

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

更改下列內容:

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

範例:


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

更改下列內容:

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

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

您可以透過下列方式設定 Cloud Composer 3 網路:

  • 公開 IP 環境中,環境的 Airflow 元件可以存取網際網路。
  • 私人 IP 環境中,環境的 Airflow 元件無法存取網際網路。
  • 私人 IP 和公開 IP 環境可以連線至您的 VPC 網路,做為個別選項。
  • 您可以指定環境的內部 IP 範圍。這個範圍之後無法變更。
  • 您可以在安裝 PyPI 套件時啟用網際網路存取權。舉例來說,啟用這個選項後,私人 IP 環境仍可從 Python Package Index 安裝 PyPI 套件。

  • 如果是共用虛擬私有雲環境,您必須為主專案進行額外的網路設定,然後在服務專案中建立公用或私人 IP 環境。按照「設定共用虛擬私有雲」頁面上的說明操作。

主控台

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

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

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

  4. 如要建立私人 IP 環境,請在「網路類型」部分選取「私人 IP 環境」選項。

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

gcloud

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

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

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

  • --network 指定您的 VPC 網路 ID。

  • --subnetwork 指定您的 VPC 子網路 ID。

範例 (已連線虛擬私有雲網路的私人 IP 環境)

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

取代:

  • NETWORK_ID 改成您的 VPC 網路 ID。
  • SUBNETWORK_ID 改成您的虛擬私有雲子網路 ID。

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

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

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

主控台

在「建立環境」頁面中:

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

gcloud

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

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

取代:

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

範例:

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

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

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

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

主控台

在「建立環境」頁面中:

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

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

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

    • 如要只允許特定 IP 範圍存取,請選取「只允許來自特定 IP 位址的存取要求」。在「IP range」(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.10.5-build.10 \
    --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.10.5-build.10 \
    --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
"
    }

}

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

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

部分 Airflow 設定選項遭到封鎖,您無法覆寫這些選項。

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

如要指定 Airflow 設定覆寫和環境變數,請使用以下指令:

主控台

在「建立環境」頁面中:

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

  2. 輸入環境變數的「名稱」和「值」

  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.10.5-build.10 \
    --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.10.5-build.10 \
    --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
"
    }
  }
}

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

Cloud Composer 3 的預設維護期間定義如下:

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

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

主控台

在「建立環境」頁面中

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

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

  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.10.5-build.10 \
    --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,可重複執行維護作業。Cloud Composer 支援兩種格式:

  • 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.10.5-build.10 \
  --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 設定維護期間的重複規則。Cloud Composer 支援兩種格式:

  • 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 設定維護期間的重複規則。Cloud Composer 支援兩種格式:

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

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

步驟 11:(選用) 資料歷程整合

資料歷程是 Dataplex Universal Catalog 的功能,可讓您追蹤資料移動情形。

所有版本的 Cloud Composer 3 都提供資料歷程整合功能

如果符合下列條件,系統會在新的 Cloud Composer 環境中自動啟用資料歷程整合功能:

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

  • Airflow 中未設定自訂 Lineage 後端

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

主控台

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

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

  2. 在「Dataplex 資料歷程整合功能」部分,選取「停用 Dataplex 資料歷程整合功能」

gcloud

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.10 \
    --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.10.5-build.10 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --disable-cloud-data-lineage-integration

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

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

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

步驟 13:(選用) 使用自訂環境的 bucket

建立環境時,Cloud Composer 會自動為您的環境建立值區。

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

如要使用自訂環境值區,請按照「使用自訂環境的值區」一文的說明操作。

步驟 14:(選用) 設定資料庫保留時間

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

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

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

您可以為環境指派標籤,根據這些標籤細分帳單費用

主控台

在「建立環境」頁面的「標籤」部分:

  1. 按一下「新增標籤」

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

gcloud

建立環境時,--labels 引數會指定以逗號分隔的鍵和值清單,並附上環境標籤。

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

取代:

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

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.10 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --labels owner=engineering-team,env=production

API

建立環境時,請在「Environment」資源中指定環境的標籤。

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

}

後續步驟