Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)
本頁說明如何建立 Managed Airflow 環境。
- 如要進一步瞭解環境,請參閱「環境架構」。
- 如要進一步瞭解如何使用 Terraform 建立環境,請參閱「建立環境 (Terraform)」。
事前準備
啟用 Cloud Composer API。如需 Managed Airflow 使用的完整服務清單,請參閱「Managed Airflow 服務需求」。
建立環境大約需要 25 分鐘。
如果您使用 Terraform 建立環境,Terraform 使用的服務帳戶必須 具備已啟用
composer.environments.create權限的角色。如要進一步瞭解 Terraform 的服務帳戶,請參閱「Google Provider Configuration Reference」。
如要進一步瞭解如何使用 Terraform 建立 Managed Airflow 環境,請參閱 Terraform 說明文件。
如要進一步瞭解其他參數,請參閱 Terraform 引數參考資料。
私人 IP:建立私人 IP 環境時,必須符合特定網路和對等互連規定。詳情請參閱「設定私人 IP」。
Shared VPC:如要搭配使用 Shared VPC 和 Managed Airflow,必須符合特定網路需求。詳情請參閱「設定 Shared VPC」。
VPC SC:如要在安全 perimeter 內部署 Managed Airflow 環境,請參閱「設定 VPC SC」。搭配 Managed Airflow 使用時,VPC Service Controls 有幾項已知限制。
您可能會注意到專案中環境所屬 GKE 叢集的 Compute Engine 中繼資料項目。在建立及升級 GKE 叢集期間,Google Kubernetes Engine 會自動新增專案層級的中繼資料項目 (
google_compute_project_metadata),追蹤次要 IP 位址範圍用量。請勿修改或移除這些項目。Google Kubernetes Engine 會自動管理這些項目。
步驟 1:建立或選擇環境的服務帳戶
建立環境時,請指定服務帳戶。這個服務帳戶稱為環境的服務帳戶。環境會使用這個服務帳戶執行大部分作業。
環境的服務帳戶不是使用者帳戶。服務帳戶是一種特殊帳戶,由應用程式或虛擬機器 (VM) 執行個體使用,而非使用者。
環境的服務帳戶設定後即無法變更。
如果專案中還沒有 Managed Airflow 環境的服務帳戶,請建立一個。
如需在 Terraform 中為環境建立服務帳戶的詳細範例,請參閱「建立環境 (Terraform)」。
如要為環境建立新的服務帳戶,請按照下列步驟操作:
按照「身分與存取權管理」說明文件中的說明,建立新的服務帳戶。
如 Identity and Access Management 說明文件所述,授予該服務帳戶角色。必要角色為 Composer 工作站 (
composer.worker)。如果您的環境使用資源位置限制,或是從 Artifact Registry 存放區或私人存放區安裝 PyPI 套件,請將服務帳戶使用者 (
iam.serviceAccountUser) 角色授予在環境中執行的使用者管理服務帳戶本身 (主體和資源都是同一個服務帳戶)。如要存取專案 Google Cloud 中的其他資源,請將 存取這些資源的額外權限授予這個服務帳戶。 在大多數情況下,Composer Worker (
composer.worker) 角色會提供這組必要權限。只有在 DAG 作業需要時,才為這個服務帳戶新增額外權限。
步驟 2:基本設定
這個步驟會在指定位置建立 Managed Airflow 環境,並使用預設參數。
本指南的其餘步驟說明如何自訂及設定環境的不同層面。其餘步驟皆為選用。
控制台
前往 Google Cloud 控制台的「建立環境」頁面。
在「Name」(名稱) 欄位中,輸入環境名稱。
名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於建立環境的子元件,因此您提供的名稱也必須是有效的 Cloud Storage bucket 名稱。如需限制清單,請參閱「Bucket 命名規範」。
在「Location」(位置) 下拉式選單中,選擇環境的位置。
位置是指環境所在的區域。
在「Image version」(映像檔版本) 下拉式清單中,選取具有所需 Airflow 版本的代管 Airflow 映像檔。
在「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-2.17.14-airflow-2.11.1 \
--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-2.17.14-airflow-2.11.1"
},
"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-2.17.14-airflow-2.11.1"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
步驟 3:將必要權限授予 Managed Airflow 服務帳戶
在專案中啟用 Cloud Composer API 時,系統會在專案中建立 Composer 服務代理程式帳戶。Managed Airflow 會使用這個帳戶,在Google Cloud 專案中執行作業。
Cloud Composer v2 API 服務代理擴充角色會為 Managed Airflow 服務代理帳戶提供額外權限。系統不會自動授予這個角色。您必須手動授予。
控制台
在專案中建立環境時,如果 Managed Airflow 服務代理不具備環境服務帳戶的必要權限,系統會顯示「將必要權限授予 Cloud Composer 服務帳戶」專區。
您將 Managed Airflow 服務代理帳戶新增為環境服務帳戶的新主體,並授予 Cloud Composer v2 API 服務代理擴充角色。
確認您使用的是環境所需的服務帳戶,然後按一下「Grant」(授予)。
gcloud
您將 Managed Airflow 服務代理帳戶新增為環境服務帳戶的新主體,並授予Cloud Composer v2 API 服務代理擴充角色。
gcloud iam service-accounts add-iam-policy-binding \
SERVICE_ACCOUNT \
--member serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \
--role roles/composer.ServiceAgentV2Ext
更改項目:
- 將
SERVICE_ACCOUNT替換為環境的服務帳戶。 PROJECT_NUMBER替換為專案編號。
範例:
gcloud iam service-accounts add-iam-policy-binding \
example-account@example-project.iam.gserviceaccount.com \
--member serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com \
--role roles/composer.ServiceAgentV2Ext
API
如要授予角色,請使用讀取 - 修改 - 寫入模式,修改現有的允許政策:
- 讀取環境服務帳戶現有的允許政策。
- 請修改政策,為 Managed Airflow 服務代理新增
roles/composer.ServiceAgentV2Ext角色。 - 重寫現有的允許政策。
詳情請參閱「以程式輔助方式控管存取權」。
{
"role": "roles/composer.ServiceAgentV2Ext",
"members": [
"serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
]
}
更改項目:
PROJECT_NUMBER替換為專案編號。
範例:
{
"role": "roles/composer.ServiceAgentV2Ext",
"members": [
"serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com"
]
}
Terraform
在環境的服務帳戶 allow 政策中新增角色繫結。
您將 Managed Airflow 服務代理帳戶新增為環境服務帳戶的新主體,並授予Cloud Composer v2 API 服務代理擴充角色。
如果您未使用 Terraform 定義環境的服務帳戶允許政策,請勿使用下列範例。請改用其他方法新增這項繫結。
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = "SERVICE_ACCOUNT"
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
更改項目:
- 將
SERVICE_ACCOUNT替換為環境的服務帳戶。 PROJECT_NUMBER,並提供專案編號。
範例:
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = "example-account@example-project.iam.gserviceaccount.com"
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com"
}
步驟 4:(選用) 設定環境規模和效能參數
如要指定環境的規模和效能設定,請選取環境大小和工作負載設定。
建立環境後,您可以變更所有成效和規模參數。
下列參數可控制規模和效能:
環境規模。控管代管 Managed Airflow 基礎架構 (包括 Airflow 資料庫) 的效能參數。如要執行大量 DAG 和工作,並提高基礎架構效能,建議您選取較大型的環境。舉例來說,環境越大,環境能以最短延遲時間處理的 Airflow 工作記錄項目數量就越多。
工作負載設定。控管在環境的 GKE 叢集中執行的 Airflow 元件規模和效能。
Airflow 排程器:剖析 DAG 定義檔案、依據排程間隔排定 DAG 執行作業,並將任務排入佇列來讓 Airflow 工作站執行。
您的環境可以同時執行多個 Airflow 排程器。使用多個排程器將負載分散到多個排程器執行個體,以提升效能和穩定性。
增加排程器數量不一定能提升 Airflow 效能。舉例來說,只使用一個排程器,效能可能比使用兩個排程器更好。如果額外的排程器未獲得運用,就會發生這種情況,進而耗用環境資源,但對整體效能沒有貢獻。實際的排程器效能取決於 Airflow 工作站數量、環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。
建議您先從兩個排程器開始,然後監控環境效能。變更排程器數量後,您隨時可以將環境縮放回原先的排程器數量。
如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件。
Airflow 觸發條件。以非同步方式監控環境中所有延後的工作。如果環境中至少有一個觸發條件執行個體 (或高彈性環境中至少有兩個),您就可以在 DAG 中使用可延遲運算子。
在代管 Airflow (第 2 代) 中,Airflow 觸發條件預設為停用。如要建立含有觸發者的環境,請將觸發者數量設為一或多個。
Airflow 網路伺服器。執行 Airflow 網頁介面,方便您監控、管理 DAG 並以視覺化方式呈現。
Airflow 工作站。執行 Airflow 排程器排定的任務。環境中的工作站數量下限和上限會依據佇列中的任務數量動態調整。
控制台
您可以為環境選取預設設定,選取預設設定後,系統會自動選取該預設設定的規模和成效參數。您也可以選取自訂預設設定,並為環境指定所有規模和效能參數。
如要選取環境的規模和效能設定,請在「Create environment」(建立環境) 頁面中執行下列操作:
如要使用預先定義的值,請在「Environment resources」(環境資源) 區段中,按一下「Small」(小型)、「Medium」(中型)、「Large」(大型)。
如要為縮放和效能參數指定自訂值,請按照下列步驟操作:
在「環境資源」部分,按一下「自訂」。
在「Scheduler」(排程器) 部分中,設定要使用的排程器數量,以及 CPU、記憶體和儲存空間的資源分配。
在「觸發條件」部分,使用「觸發條件數量」欄位,輸入環境中的觸發條件數量。
如果不想在 DAG 中使用可延遲運算子,請將觸發條件數量設為零。根據預設,Managed Airflow (第 2 代) 會停用觸發條件。
如果為環境設定至少一個觸發器,請使用「CPU」和「記憶體」欄位,為觸發器設定資源分配。
在「DAG processor」(DAG 處理器) 區段中,指定環境中的 DAG 處理器數量,以及每個 DAG 處理器的 CPU、記憶體和儲存空間。
高復原力環境至少需要兩個 DAG 處理器。
在「Web server」部分,指定網路伺服器的 CPU 數量、記憶體容量和儲存空間。
在「Worker」部分,指定下列項目:
- 環境中自動調度資源限制的 worker 數量下限和上限。
- worker 的 CPU、記憶體和儲存空間分配
在「Core infrastructure」(核心基礎架構) 區段的「Environment size」(環境大小) 下拉式選單中,選取環境大小。
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。--web-server-cpu指定 Airflow 網路伺服器的 CPU 數量。--web-server-memory指定 Airflow 網路伺服器的記憶體容量。--web-server-storage指定 Airflow 網路伺服器的磁碟空間量。--worker-cpu指定 Airflow worker 的 CPU 數量。--worker-memory:指定 Airflow 工作站的記憶體容量。--worker-storage指定 Airflow 工作人員的磁碟空間量。--min-workers指定 Airflow worker 數量下限。環境叢集至少會執行這個數量的 worker。--max-workers指定 Airflow worker 的數量上限。環境叢集最多會執行這個數量的 worker。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--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 \
--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觸發者的 CPU 數量 (以 vCPU 為單位)。TRIGGERER_MEMORY:觸發器的記憶體容量,以 GB 為單位。WEB_SERVER_CPU替換為網路伺服器的 CPU 數量 (單位為 vCPU)。WEB_SERVER_MEMORY替換為網路伺服器的記憶體容量。WEB_SERVER_STORAGE,並提供網路伺服器的記憶體容量。WORKER_CPU,以 vCPU 為單位。WORKER_MEMORY,並提供工作站的記憶體容量。WORKER_STORAGE,其中包含 worker 的磁碟大小。WORKERS_MIN替換為環境可執行的 Airflow worker 數量下限。即使較少的工作站就能處理負載,環境中的工作站數量也不會超過這個數字。WORKERS_MAX,環境可執行的 Airflow 工作站數量上限。即使需要更多工作站來處理負載,環境中的工作站數量也不會超過這個數字。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.14-airflow-2.11.1 \
--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 \
--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
},
"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會指定觸發條件的 CPU 數量,單位為 vCPU。允許的值:0.5、0.75、1。TRIGGERER_MEMORY會為觸發器設定記憶體容量。記憶體容量下限等於分配給觸發條件的 CPU 數量。允許的最大值等於觸發器 CPU 數量乘以 6.5。舉例來說,如果將
TRIGGERER_CPU設為1,則TRIGGERER_MEMORY的最小值為1,最大值為6.5。WEB_SERVER_CPU替換為網路伺服器的 CPU 數量 (單位為 vCPU)。WEB_SERVER_MEMORY:網路伺服器的記憶體容量,以 GB 為單位。WEB_SERVER_STORAGE:網路伺服器的磁碟大小 (以 GB 為單位)。WORKER_CPU,以 vCPU 為單位。WORKER_MEMORY,以 GB 為單位,表示工作站的記憶體容量。WORKER_STORAGE:worker 的磁碟大小 (以 GB 為單位)。WORKERS_MIN,並指定環境可執行的 Airflow 工作站數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站就能處理負載也一樣。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
},
"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欄位會指定環境中的觸發條件數量。web_server.cpu欄位會指定 Airflow 網路伺服器的 CPU 數量。「
web_server.memory_gb」欄位會指定 Airflow 網頁伺服器的記憶體容量。web_server.storage_gb欄位會指定 Airflow 網路伺服器的磁碟空間量。worker.cpu欄位會指定 Airflow worker 的 CPU 數量。worker.memory_gb欄位會指定 Airflow worker 的記憶體容量。worker.storage_gb欄位會指定 Airflow worker 的磁碟空間量。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
}
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,以 vCPU 為單位。SCHEDULER_MEMORY:排程器的記憶體容量,以 GB 為單位。SCHEDULER_STORAGE:排程器的磁碟大小 (以 GB 為單位)。SCHEDULER_COUNT:排程器數量。TRIGGERER_COUNT:觸發條件數量。TRIGGERER_CPU觸發者的 CPU 數量 (以 vCPU 為單位)。TRIGGERER_MEMORY:觸發器的記憶體容量,以 GB 為單位。WEB_SERVER_CPU替換為網路伺服器的 CPU 數量 (單位為 vCPU)。WEB_SERVER_MEMORY:網路伺服器的記憶體容量,以 GB 為單位。WEB_SERVER_STORAGE:網路伺服器的磁碟大小 (以 GB 為單位)。WORKER_CPU,以 vCPU 為單位。WORKER_MEMORY,以 GB 為單位,表示工作站的記憶體容量。WORKER_STORAGE:worker 的磁碟大小 (以 GB 為單位)。WORKERS_MIN,並指定環境可執行的 Airflow 工作站數量下限。環境中的工作站數量不會超過這個數字,即使較少的工作站就能處理負載也一樣。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
"
}
}
}
步驟 5:(選用) 啟用高復原力模式
高韌性 (高可用性) Managed Airflow 環境採用內建的備援和容錯移轉機制,可降低環境受可用區故障和單點故障中斷影響的程度。
高復原力環境是多可用區環境,至少會在所選區域的兩個可用區中執行。下列元件會在不同區域中執行:
兩個 Airflow 排程器
至少兩個觸發條件 (如果觸發條件數量未設為
0)兩部網路伺服器
worker 數量下限設為 2,環境的叢集會在可用區之間分配 worker 執行個體。如果可用區服務中斷,受影響的 worker 執行個體會在其他可用區重新排程。高彈性環境的 Cloud SQL 元件具有主要執行個體和待命執行個體,分布在不同可用區。
控制台
在「Create environment」(建立環境) 頁面中:
在「復原模式」部分,選取「高復原力」。
在「Environment resources」(環境資源) 區段中,選取高彈性環境的資源調度參數。高彈性環境需要兩個排程器、零個或兩到十個觸發器,以及至少兩個 worker:
按一下 [Custom] (自訂)。
在「Number of schedulers」(排程器數量) 下拉式選單中,選取
2。在「Number of triggerers」(觸發者數量) 下拉式選單中,選取
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-2.17.14-airflow-2.11.1 \
--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 可用區。
控制台
在「建立環境」頁面中:
在「Advanced configuration」(進階設定) 部分,展開「Show advanced configuration」(顯示進階設定) 項目。
在「Airflow database zone」(Airflow 資料庫可用區) 清單中,選取偏好的 Cloud SQL 可用區。
gcloud
建立環境時,--cloud-sql-preferred-zone 引數會指定偏好的 Cloud SQL 可用區。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--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-2.17.14-airflow-2.11.1 \
--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:(選用) 設定環境的網路
網路參數取決於您要建立的環境類型:
公開 IP 環境。使用預設網路參數。
私人 IP 環境 (含 PSC)。在這個設定中,環境會使用 Private Service Connect 進行連線。
設定私人 IP 環境:
- 為專案設定私人 IP 環境的網路。
- 建立環境時,請設定 Private Service Connect。
- 為私人 IP 環境指定其他參數,詳情請參閱本節。
如果是使用 PSC 的私人 IP 環境,您需要瞭解:
- 虛擬私有雲網路 ID
- 您的虛擬私有雲子網路 ID
虛擬私有雲子網路中的兩個次要 IP 範圍:
- pod 的次要 IP 範圍
- 服務的次要 IP 範圍
環境元件的 IP 範圍:
- GKE 控制層 IP 範圍。GKE 控制層的 IP 範圍。
- Managed Airflow 連線子網路。Managed Airflow 連線子網路的 IP 範圍。
私人 IP 環境 (虛擬私有雲對等互連)。在這項設定中,環境會使用虛擬私有雲對等互連進行連線。
設定私人 IP 環境:
- 為私人 IP 環境設定專案網路。
- 如本節所述,為私人 IP 環境指定其他參數。
如要使用虛擬私有雲對接的私人 IP 環境,請注意下列事項:
- 虛擬私有雲網路 ID
- 您的虛擬私有雲子網路 ID
虛擬私有雲子網路中的兩個次要 IP 範圍:
- pod 的次要 IP 範圍
- 服務的次要 IP 範圍
環境元件的 IP 範圍:
GKE 控制層的 IP 範圍。
從內部 Managed Airflow 網路匯出至所選網路的虛擬私有雲對等互連 IP 範圍。Managed Airflow 基礎架構元件會使用這個範圍內的 IP 位址。
Cloud SQL 執行個體的 IP 範圍。
如果是Shared VPC 環境,您必須為主專案進行額外的網路設定,然後在服務專案中建立公開或私人 IP 環境。請按照「設定 Shared VPC」頁面的操作說明進行。
在 Shared VPC 環境中,您需要瞭解:
- 主專案虛擬私有雲網路 ID
主專案虛擬私有雲子網路 ID
主專案虛擬私有雲子網路中的兩個次要 IP 範圍:
- pod 的次要 IP 範圍
- 服務的次要 IP 範圍
建立公開 IP Shared VPC 環境時,您仍須指定主專案的虛擬私有雲網路、子網路,以及 Pod 和服務的次要 IP 範圍。
如要建立 VPC SC 環境,您必須建立 service perimeter,然後在該 perimeter 內建立私人 IP 環境。按照「設定 VPC Service Controls」一文中的指示操作。
如要建立受限端點用量環境,您必須先設定
constraints/gcp.restrictEndpointUsage組織政策,然後建立新的 Managed Airflow (第 2 代) 環境。私人 IP 環境需要額外的網路設定。請按照「使用『限制端點用量』政策設定環境」一文的操作說明操作。
環境的其他網路選項如下:
- 私人使用的公開 IP 位址。如要使用更多 IP 位址,您的環境可以私下使用特定公開 IP 位址範圍,做為 Pod 和服務的內部子網路 IP 位址範圍。
- 授權網路。如要使用 HTTPS 存取私人 IP 環境的控制層,可以使用授權網路指定可執行這項操作的 CIDR 範圍。
- IP 偽裝代理程式。使用具備 IP 偽裝代理程式的環境,即可在環境的網路設定中,使用多對一 IP 位址轉譯。如要進一步瞭解如何使用 IP 偽裝代理程式建立環境,請參閱「啟用 IP 偽裝代理程式」。
控制台
如要建立私人 IP 環境,請按照下列步驟操作:
請務必根據要建立的環境類型設定網路。
在「Network configuration」(網路設定) 部分,展開「Show network configuration」(顯示網路設定) 項目。
在「網路」下拉式選單中,選取虛擬私有雲網路 ID。
在「Subnetwork」(子網路) 下拉式選單中,選取虛擬私有雲子網路 ID。
在「Secondary IP range for pods」(Pod 的次要 IP 範圍) 區段中,選取或指定 Pod 的次要 IP 範圍。您可以使用虛擬私有雲網路中的現有次要範圍,也可以選擇使用自動建立的範圍。
在「服務的次要 IP 範圍」部分,選取或指定服務的次要 IP 範圍。您可以使用虛擬私有雲網路中的現有次要範圍,也可以選擇使用自動建立的範圍。
在「Networking type」(網路類型) 區段中,選取「Private IP environment」(私人 IP 環境) 選項,建立私人 IP 環境。
在「Composer connectivity」(Composer 連線) 區段中,選取環境的網路類型,並指定環境元件的 IP 範圍:
如果環境使用 Private Service Connect:
如果環境使用 Private Service Connect,請選取「Private Service Connect」。
在「Composer connection subnetwork」(Composer 連線子網路) 區段中,指定 Managed Airflow 連線子網路的 IP 範圍。系統會從這個範圍選取 PSC 端點的位址。您可以指定自訂範圍,或選擇使用預設範圍。
如果環境使用虛擬私有雲對接:
如果環境使用虛擬私有雲對接,請選取「VPC peerings」(虛擬私有雲對接)。
在「IP range for Composer tenant network」(Composer 租戶網路的 IP 範圍) 區段中,指定 Managed Airflow 租戶網路的 IP 範圍。這個網路會託管環境的 SQL Proxy 元件。您可以指定自訂範圍,也可以選擇使用預設範圍。
在「Cloud SQL 網路的 IP 範圍」部分,指定 Cloud SQL 執行個體的 IP 範圍。您可以指定自訂範圍,也可以選擇使用預設範圍。
在「GKE 控制層網路的 IP 範圍」部分,指定 GKE 控制層的 IP 範圍:
如要使用環境所在區域的預設 IP 範圍,請選取「Default IP range」(預設 IP 範圍)。
如要指定自訂 IP 範圍,請選取「Custom IP range」(自訂 IP 範圍),然後在「GKE cluster master private IP」(GKE 叢集主要執行個體私人 IP) 欄位中,以 CIDR 標記法輸入範圍。
選取 GKE 控制層的存取層級。控制層有兩個端點。一個是私人端點,供叢集節點和 VM 使用。另一個端點是公開端點。您可以指定公開端點的存取層級:
如要允許從授權網路存取公開端點,請選取「使用外部 IP 位址存取叢集控制層端點」核取方塊。
使用這個選項會將控制層的存取層級設為「已啟用公開端點存取權,已啟用授權網路」。這樣就能限制授權網路存取控制層。根據預設,系統不會指定任何來源 IP 位址。您可以將授權網路新增至叢集。
如要禁止從授權網路存取公開端點,請取消勾選「Access cluster control plane endpoint using its external IP address」(使用外部 IP 位址存取叢集控制層端點) 核取方塊。
gcloud
請務必根據要建立的環境類型設定網路。
建立環境時,下列引數會控管網路參數。如果省略參數,系統會使用預設值。
--enable-private-environment會啟用私人 IP 環境。--network指定虛擬私有雲網路 ID。--subnetwork指定虛擬私有雲子網路 ID。--cluster-secondary-range-name或--cluster-ipv4-cidr會設定 Pod 的次要範圍。--services-secondary-range-name或--services-ipv4-cidr,為服務設定次要範圍。--master-ipv4-cidr指定 GKE 控制層的範圍。
(使用 PSC 的環境)
--connection-subnetwork指定 Managed Airflow 連線子網路的範圍,該子網路會代管 PSC 端點。(使用虛擬私有雲對等互連的環境)
--connection-type=VPC_PEERING指定環境必須使用虛擬私有雲對等互連。(具有虛擬私有雲對等互連的環境)
--composer-network-ipv4-cidr指定 Managed Airflow 租戶網路的範圍。這個網路會代管環境的 SQL Proxy 元件。(具有 VPC 對等互連的環境)
--cloud-sql-ipv4-cidr指定 Cloud SQL 執行個體的範圍。
--enable-private-endpoint控制 GKE 控制層的存取層級。控制層有兩個端點。一個是私人端點,供叢集節點和 VM 使用。另一個端點是公開端點。您可以指定公開端點的存取層級:如要允許從已授權的網路存取公開端點,請省略
--enable-private-endpoint引數。使用這個選項會將控制層的存取層級設為「已啟用公開端點存取權,已啟用授權網路」。這樣一來,只有授權網路能存取控制層,且存取權會受到限制。根據預設,系統不會指定任何來源 IP 位址。您可以將授權網路新增至叢集。
如要禁止從已授權的網路存取公開端點,請指定
--enable-private-endpoint引數。
--enable-master-authorized-networks和--master-authorized-networks引數會為環境設定授權網路。--enable-privately-used-public-ips會為環境設定私人使用的公開 IP 位址。--enable-ip-masq-agent啟用 IP 偽裝代理程式。
範例 (私人 IP 環境)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
--cluster-ipv4-cidr PODS_RANGE \
--services-ipv4-cidr SERVICES_RANGE \
--master-ipv4-cidr CONTROL_PLANE_RANGE \
--connection-subnetwork COMPOSER_PSC_RANGE \
更改項目:
- 將
NETWORK_ID替換成虛擬私有雲網路 ID。 將
SUBNETWORK_ID換成您的虛擬私有雲子網路 ID。PODS_RANGE:Pod 的次要範圍。SERVICES_RANGE,並使用服務的次要範圍。CONTROL_PLANE_RANGE,並使用 GKE 控制層的次要範圍。COMPOSER_PSC_RANGE,並使用 Managed Airflow 連線子網路的範圍。
步驟 8:(選用) 新增聯播網代碼
網路標記會套用至環境叢集中的所有節點 VM。標記是用於識別網路防火牆的有效來源或目標。清單中的各個標記均須符合 RFC 1035 標準。
舉例來說,如果您打算使用防火牆規則限制私人 IP 環境的流量,可能需要新增網路標記。
控制台
在「建立環境」頁面中:
- 找出「網路設定」部分。
- 在「Network tags」(網路標記) 欄位中,輸入環境的網路標記。
gcloud
建立環境時,下列引數會控管網路標記:
--tags會指定套用至所有節點 VM 的網路標記清單,並以半形逗號分隔。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
更改項目:
TAGS,並以半形逗號分隔網路標記。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.14-airflow-2.11.1 \
--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 範圍。
控制台
在「Create environment」(建立環境) 頁面中:
在「網路設定」部分,展開「顯示網路設定」項目。
在「網路伺服器網路存取控管」部分:
如要允許所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」。
如要限制僅特定 IP 範圍可存取,請選取「Allow access only from specific IP addresses」(僅允許從特定 IP 位址存取)。在「IP range」(IP 範圍) 欄位中,以 CIDR 標記法指定 IP 範圍。在「說明」欄位中,指定這個範圍的說明 (選填)。如要指定多個範圍,請按一下「新增 IP 範圍」。
如要禁止所有 IP 位址存取,請選取「Allow access only from specific IP addresses」(僅允許從特定 IP 位址存取),然後按一下空白範圍項目旁的「Delete item」(刪除項目)。
gcloud
建立環境時,下列引數會控管網路伺服器存取層級:
--web-server-allow-all允許從所有 IP 位址存取 Airflow。這是預設選項。--web-server-allow-ip僅限特定來源 IP 範圍存取。如要指定多個 IP 範圍,請多次使用這個引數。--web-server-deny-all禁止所有 IP 位址存取。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--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-2.17.14-airflow-2.11.1 \
--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」(建立環境) 頁面中:
在「環境變數」部分,按一下「新增環境變數」。
輸入環境變數的「Name」(名稱) 和「Value」(值)。
在「Airflow configuration overrides」(覆寫 Airflow 設定) 部分,按一下「Add Airflow configuration override」(新增覆寫 Airflow 設定)。
輸入設定選項覆寫的「區段」、「鍵」和「值」。
例如:
區段 鍵 值 webserverdag_orientationTB
gcloud
建立環境時,下列引數會控管環境變數和 Airflow 設定覆寫:
--env-variables指定以逗號分隔的清單環境變數。變數名稱可包含大小寫字母、數字和底線,但開頭不得為數字。
--airflow-configs指定以半形逗號分隔的鍵和值清單,用於覆寫 Airflow 設定。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--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-2.17.14-airflow-2.11.1 \
--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 (第 2 代) 的預設維護期間為每週五、六、日的 00:00:00 至 04:00:00 (GMT)。
如要為環境指定自訂維護期間,請按照下列步驟操作:
控制台
在「Create environment」(建立環境) 頁面
找到「維護期間」部分。
在「Timezone」(時區) 下拉式選單中,選擇維護時段的時區。
設定「開始時間」、「天數」和「長度」,以便:
每週至少分配 12 小時。
你可以使用多個時段,但每個時段的長度至少須為 4 小時。
舉例來說,每週一、週三和週五各 4 小時,即可提供所需的時間。
gcloud
下列引數會定義維護期間參數:
--maintenance-window-start可設定維護期間的開始時間。--maintenance-window-end設定維護期間的結束時間。--maintenance-window-recurrence集合,設定維護期間的週期。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
更改項目:
ENVIRONMENT_NAME:環境名稱。DATETIME_START,並以日期/時間輸入格式輸入開始日期和時間。系統只會使用當天指定的時間,並忽略指定日期。DATETIME_END,並以日期/時間輸入格式輸入結束日期和時間。系統只會使用當天指定的時間,並忽略指定日期。指定的日期和時間必須晚於開始日期。MAINTENANCE_RECURRENCE,並使用 RFC 5545 RRULE 設定維護時段的重複規則。Managed Airflow 支援兩種格式:FREQ=DAILY格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA格式會指定在所選星期幾重複執行。
以下範例指定在週三、週六和週日的 01:00 至 07:00 (世界標準時間) 之間,進行 6 小時的維護期間。系統會忽略 2023 年 1 月 1 日。
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
建立環境時,請在環境 > EnvironmentConfig 資源中指定維護期間參數:
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
更改項目:
DATETIME_START,並以日期/時間輸入格式輸入開始日期和時間。系統只會使用指定時間,並忽略指定日期。DATETIME_END,並以日期/時間輸入格式提供結束日期和時間。系統只會使用指定時間,並忽略指定日期。指定的日期和時間必須晚於開始日期。MAINTENANCE_RECURRENCE,並使用 RFC 5545 RRULE 設定維護期間的週期。Managed Airflow 支援兩種格式:FREQ=DAILY格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA格式會指定在所選星期幾重複執行。
以下範例指定維護期間為星期三、星期六和星期日,時間為 01:00 至 07:00 (世界標準時間),共 6 小時。系統會忽略 2023 年 1 月 1 日。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
maintenance_window 區塊會指定環境的維護期間:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
更改項目:
DATETIME_START,並以日期/時間輸入格式輸入開始日期和時間。系統只會使用指定的時間,並忽略指定的日期。DATETIME_END,並以日期/時間輸入格式輸入結束日期和時間。系統只會使用指定時間,並忽略指定日期。指定的日期和時間必須晚於開始日期。MAINTENANCE_RECURRENCE,並使用 RFC 5545 RRULE 設定維護期間的週期。Managed Airflow 支援兩種格式:FREQ=DAILY格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA格式會指定在所選星期幾重複執行。
以下範例指定在週三、週六和週日的 01:00 至 07:00 (世界標準時間) 之間,進行 6 小時的維護期間。系統會忽略 2023 年 1 月 1 日。
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
步驟 12. (選用) 資料歷程整合功能
資料歷程是 Knowledge Catalog 的功能,可追蹤資料移動情形。
資料歷程整合功能適用於 Managed Airflow (第 2 代) 2.1.2 以上版本,以及 Airflow 2.2.5 以上版本。如果符合下列條件,系統會在新的 Managed Airflow 環境中自動啟用資料歷程整合功能:
專案已啟用 Data Lineage API。詳情請參閱 Knowledge Catalog 說明文件中的「啟用 Data Lineage API」。
Airflow 中未設定自訂 Lineage 後端。
建立環境時,您可以停用資料歷程整合功能。舉例來說,如果您想覆寫自動行為,或選擇在建立環境後稍後啟用資料沿襲。
控制台
如要停用資料歷程整合功能,請在「Create environment」(建立環境) 頁面執行下列操作:
在「Advanced configuration」(進階設定) 部分,展開「Show advanced configuration」(顯示進階設定)。
在「Knowledge Catalog Lineage integration」(Knowledge Catalog 歷程整合) 選單中,選取「Disable integration with Knowledge Catalog Lineage」(停用 Knowledge Catalog 歷程整合功能)。
gcloud
建立環境時,--disable-cloud-data-lineage-integration 引數會停用資料歷程整合功能。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "SERVICE_ACCOUNT" \
--disable-cloud-data-lineage-integration
更改項目:
ENVIRONMENT_NAME替換為環境名稱。- 將
LOCATION替換為環境所在的區域。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.14-airflow-2.11.1 \
--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。環境會以與自動建立值區相同的方式使用這個值區。
如要使用自訂環境值區,請按照「使用自訂環境的值區」中的操作說明操作。
步驟 15. (選用) 指定環境標籤
您可以為環境指派標籤,根據這些標籤細分已計費用。
控制台
在「建立環境」頁面的「標籤」部分:
按一下「新增標籤」。
在「Key」(鍵) 和「Value」(值) 欄位中,指定環境標籤的鍵/值組合。
gcloud
建立環境時,--labels 引數會指定以半形逗號分隔的鍵和值清單,其中包含環境標籤。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-2.17.14-airflow-2.11.1 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
更改項目:
LABELS,並以半形逗號分隔環境標籤的KEY=VALUE配對清單。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.14-airflow-2.11.1 \
--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"
}
}
後續步驟
- 疑難排解環境建立問題
- 設定 Shared VPC
- 設定 VPC Service Controls
- 新增及更新 DAG
- 存取 Airflow UI
- 更新及刪除環境
- 關於 Managed Airflow 版本