Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁說明如何建立 Cloud Composer 環境。
- 如要進一步瞭解環境,請參閱「環境架構」。
- 如要進一步瞭解如何使用 Terraform 建立環境,請參閱「建立環境 (Terraform)」。
事前準備
啟用 Cloud Composer API。如需 Cloud Composer 使用的完整服務清單,請參閱「Cloud Composer 必須使用的服務」。
建立環境大約需要 25 分鐘。
如果您使用 Terraform 建立環境,Terraform 用的服務帳戶必須具備角色,且啟用
composer.environments.create
權限。如要進一步瞭解 Terraform 的服務帳戶,請參閱 Google 供應商設定參考資料。
如要進一步瞭解如何使用 Terraform 建立 Cloud Composer 環境,請參閱 Terraform 說明文件。
如要進一步瞭解其他參數,請參閱 Terraform 參數參考資料。
VPC SC:如要在安全範圍內部署 Cloud Composer 環境,請參閱設定 VPC SC。與 Cloud Composer 搭配使用時,VPC Service Controls 有幾項已知限制。
步驟 1:建立或選擇環境的服務帳戶
建立環境時,請指定服務帳戶。這個服務帳戶稱為環境的服務帳戶。您的環境會使用這個服務帳戶執行大部分作業。
環境的服務帳戶不是使用者帳戶。服務帳戶是一種特殊帳戶,由應用程式或虛擬機器 (VM) 執行個體使用,而非由人員使用。
環境的服務帳戶設定後即無法變更。
如果專案中還沒有 Cloud Composer 環境的服務帳戶,請建立一個。
如需在 Terraform 中為環境建立服務帳戶的擴充範例,請參閱「建立環境 (Terraform)」。
如要為環境建立新的服務帳戶,請按照下列步驟操作:
按照 Identity and Access Management 說明文件中的說明,建立新的服務帳戶。
請按照 Identity and Access Management 說明文件中的說明授予角色。必要角色為 Composer Worker (
composer.worker
)。如要存取 Google Cloud 專案中的其他資源,請將存取這些資源的額外權限授予這個服務帳戶。在大多數情況下,Composer 工作者 (
composer.worker
) 角色會提供這組必要權限。只有在 DAG 運作需要時,才為這個服務帳戶新增額外權限。
步驟 2:基本設定
這個步驟會在指定位置建立 Cloud Composer 環境,並使用預設參數。
主控台
前往 Google Cloud 控制台的「建立環境」頁面。
在「Name」(名稱) 欄位中,輸入環境的名稱。
名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於建立環境的子元件,因此您必須提供有效的名稱,且該名稱也必須是有效的 Cloud Storage 值區名稱。如需限制清單,請參閱「Bucket 命名規範」。
在「Location」(位置) 下拉式清單中,選擇環境的位置。
位置是指環境所在的區域。
在「映像檔版本」下拉式清單中,選取具有所需 Airflow 版本的 Cloud Composer 映像檔。
在「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 排程器排定的工作。環境中的工作站數量下限與上限,會根據佇列中的工作數量動態調整。
主控台
您可以為環境選取預設設定,選取預設設定後,系統會自動選取該預設設定的規模和成效參數。您也可以選擇自訂預設值,並為環境指定所有規模和效能參數。
如要為環境選取規模和效能設定,請在「建立環境」頁面中執行下列操作:
如要使用預先定義的值,請在「環境資源」部分中,按一下「小」、「中」或「大」。
如要為規模和成效參數指定自訂值,請按照下列步驟操作:
在「環境資源」部分,按一下「自訂」。
在「排程器」部分中,設定要使用的排程器數量,以及 CPU、記憶體和儲存空間的資源分配。
在「觸發條件」部分,使用「觸發條件數量」欄位,輸入環境中的觸發條件數量。
如果不想在 DAG 中使用可延遲運算子,請將觸發條件數量設為零。
如果為環境設定至少一個觸發器,請使用「CPU」和「記憶體」欄位,為觸發器設定資源分配。
在「DAG 處理器」部分,指定環境中的 DAG 處理器數量,以及每個 DAG 處理器的 CPU、記憶體和儲存空間數量。
高復原力環境至少需要兩個 DAG 處理器。
在「Web server」部分,指定網頁伺服器的 CPU 數量、記憶體容量和儲存空間。
在「工作站」部分,指定:
- 環境中自動調度資源限制的工作站數量下限與上限。
- 工作站的 CPU、記憶體和儲存空間配置
在「核心基礎架構」部分,從「環境大小」下拉式清單中選取環境大小。
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
會以 vCPU 為單位,指定 Airflow 觸發器的 CPU 數量。允許的值: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-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
,搭配small
、medium
或large
。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 中使用可延遲運算子,就必須使用觸發器。- 如果是標準復原環境,請使用介於
0
和10
之間的值。 - 對於具備高度彈性的環境,請使用
0
或介於2
和10
之間的值。
如果使用至少一個觸發器,您也必須指定
TRIGGERER_CPU
和TRIGGERER_MEMORY
參數:- 如果是標準復原環境,請使用介於
TRIGGERER_CPU
會以 vCPU 為單位,指定觸發器的 CPU 數量。允許的值: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
是 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_SMALL
、ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_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_SMALL
、ENVIRONMENT_SIZE_MEDIUM
或ENVIRONMENT_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 環境採用內建的備援和容錯移轉機制,可降低環境受可用區故障和單點故障停機影響的機率。
高復原力環境是多可用區環境,至少會在所選區域的兩個可用區中執行。下列元件會在不同區域中執行:
兩個 Airflow 排程器
至少兩個觸發條件 (如果觸發條件數量未設為
0
)至少兩個 DAG 處理器
兩個網路伺服器
工作站數量下限設為兩個,環境的叢集會在各個區域之間分配工作站執行個體。如果發生區域服務中斷,受影響的工作人員執行個體會重新排定至其他區域。高彈性環境的 Cloud SQL 元件包含主要執行個體和待命執行個體,兩者會分散在不同區域。
主控台
在「建立環境」頁面中:
在「復原模式」部分,選取「高復原力」。
在「環境資源」部分,選取高復原力環境的規模參數。高復原力環境需要兩個排程器、零個或介於兩個和十個之間的觸發器,以及至少兩個工作站:
按一下 [Custom] (自訂)。
在「Number of schedulers」(排程器數量) 下拉式清單中,選取
2
。在「觸發器數量」下拉式清單中,選取
0
、 或介於2
和10
之間的值。為觸發器設定 CPU 和記憶體分配量。在「工作站數量下限」下拉式清單中,選取
2
或更多,視所需工作站數量而定。
在「網路設定」部分中:
在「網路類型」中,選取「私人 IP 環境」。
視需要指定其他網路參數。
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.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 可用區。
主控台
在「建立環境」頁面中:
在「進階設定」部分,展開「顯示進階設定」項目。
在「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 環境。按照「設定共用虛擬私有雲」頁面上的說明操作。
主控台
請確認網路已針對要建立的環境類型完成設定。
在「網路設定」部分中,展開「顯示網路設定」項目。
如要將環境連線至虛擬私有雲網路,請在「Network attachment」(網路附件) 欄位中選取網路附件。您也可以建立新的網路連結。詳情請參閱「將環境連線至虛擬私有雲網路」。
如要建立私人 IP 環境,請在「網路類型」部分選取「私人 IP 環境」選項。
如要新增網路標記,請參閱新增網路標記一文。
gcloud
請確認網路已針對要建立的環境類型完成設定。
建立環境時,下列引數會控管網路參數。如果省略參數,系統會使用預設值。
--enable-private-environment
啟用私人 IP 環境。--network
指定您的 VPC 網路 ID。--subnetwork
指定您的 VPC 子網路 ID。
--composer-internal-ipv4-cidr-block
會指定環境的內部 IP 範圍。Cloud Composer 會在環境的用戶群專案中使用這個範圍。
範例 (已連線虛擬私有雲網路的私人 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 環境的流量,可能就需要新增網路標記。
主控台
在「建立環境」頁面中:
- 找出「網路設定」部分。
- 在「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 範圍。
主控台
在「建立環境」頁面中:
在「網路設定」部分,展開「顯示網路設定」項目。
在「網路伺服器網路存取權控管」部分:
如要允許所有 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 設定覆寫和環境變數,請使用以下指令:
主控台
在「建立環境」頁面中:
在「環境變數」部分,按一下「新增環境變數」。
輸入環境變數的「名稱」和「值」。
在「Airflow configuration overrides」(Airflow 設定覆寫) 部分,按一下「Add Airflow configuration override」(新增 Airflow 設定覆寫)。
輸入設定選項覆寫的區段、鍵和值。
例如:
區段 鍵 值 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。
如要為環境指定自訂維護期間,請按照下列步驟操作:
主控台
在「建立環境」頁面中
找出「維護期間」部分。
在「時區」下拉式清單中,選擇維護時段的時區。
設定「開始時間」、「天數」和「長度」,以便:
每週至少分配 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 後端。
建立環境時,您可以停用資料沿襲整合功能。舉例來說,如果您想覆寫自動行為,或選擇在建立環境後稍後啟用資料沿襲,就可以這麼做。
主控台
如要停用資料歷程整合功能,請在「建立環境」頁面執行下列操作:
在「進階設定」部分,展開「顯示進階設定」項目。
在「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:(選用) 指定環境標籤
您可以為環境指派標籤,根據這些標籤細分帳單費用。
主控台
在「建立環境」頁面的「標籤」部分:
按一下「新增標籤」。
在「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"
}
}