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 引數參考資料。
私人 IP:建立私人 IP 環境有特定的網路和對等互連要求。詳情請參閱「設定私人 IP」。
共用虛擬私有雲:搭配共用虛擬私有雲使用 Cloud Composer 有特定的網路要求。詳情請參閱「設定共用虛擬私人雲端」。
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
)。如果您的環境使用資源位置限制,或從 Artifact Registry 存放區或從私人存放區安裝 PyPI 套件,請將「服務帳戶使用者」 (
iam.serviceAccountUser
) 角色授予使用者代管的服務帳戶,讓該帳戶自行執行您的環境 (主體和資源皆為相同的服務帳戶)。如要存取 Google Cloud 專案中的其他資源,請將額外權限授予此服務帳戶,讓該帳戶能夠存取這些資源。在大多數情況下,Composer 工作者 (
composer.worker
) 角色會提供這組必要權限。只有在 DAG 運作需要時,才為這個服務帳戶新增額外權限。
步驟 2:基本設定
這個步驟會在指定位置建立 Cloud Composer 環境,並設定預設參數。
主控台
在 Google Cloud 控制台中,前往「Create environment」頁面。
在「Name」欄位中,輸入環境名稱。
名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範。
在「Location」下拉式清單中,為環境選擇位置。
位置是指環境所在的區域。
在「映像檔版本」下拉式清單中,選取含有所需 Airflow 版本的 Cloud Composer 映像檔。
在「Node configuration」部分的「Service account」下拉式清單中,選取環境的服務帳戶。
如果您尚未為環境建立服務帳戶,請參閱建立或選擇環境的服務帳戶。
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
取代:
將
ENVIRONMENT_NAME
替換為環境的名稱。名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範。
將
LOCATION
替換成環境的區域。位置是指環境所在的區域。
SERVICE_ACCOUNT
與環境的服務帳戶。IMAGE_VERSION
改為 Cloud Composer 映像檔的名稱。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
API
建構 environments.create
API 要求。在 Environment
資源中指定設定。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
取代:
將
PROJECT_ID
替換為專案 ID。將
LOCATION
替換成環境的區域。位置是指環境所在的區域。
將
ENVIRONMENT_NAME
替換為環境名稱。名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範。
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-1.20.12-airflow-1.10.15"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
如要建立含有預設參數的環境,請將下列資源區塊新增至 Terraform 設定,然後執行 terraform apply
。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "IMAGE_VERSION"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
取代:
將
ENVIRONMENT_NAME
替換為環境的名稱。名稱開頭必須為小寫英文字母,後面最多可接 62 個小寫英文字母、數字或連字號,但結尾不得為連字號。環境名稱會用於為環境建立子元件,因此您必須提供可做為 Cloud Storage 值區名稱的名稱。如要查看限制清單,請參閱值區命名規範。
將
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-1.20.12-airflow-1.10.15"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
步驟 3:(選用) 設定環境縮放和效能參數
如要指定環境的規模和效能設定,請提供環境 GKE 叢集中的節點數量,並為環境元件選取機器類型。
主控台
在「Create environment」頁面中,執行下列操作:
在「節點設定」部分中:
輸入節點數。
節點數是環境叢集中的 Google Kubernetes Engine 節點數。根據預設,環境有 3 個節點。
您可以在建立環境後變更這個值。
為節點選擇「Machine type」(機器類型)。
節點的機器類型是用於叢集執行個體的 Compute Engine 機器類型。這個參數會決定環境的 CPU 數和記憶體量。預設機器類型為
n1-standard-1
。如要在建立環境後變更這個值,您必須手動重新設定環境叢集。
輸入磁碟大小。
環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都擁有這麼多磁碟空間。如果您想在與環境 VM 同步的資料夾中儲存大量資料,請選取較大的磁碟大小。例如,在環境值區的
/data
資料夾中。大小下限為 30 GB。預設大小為 100 GB。建立環境後,您就無法變更這個參數。
選擇「排程器數量」。
您的環境可以同時執行多個 Airflow 排程器。使用多個排程器可以將負載分配到多個排程器執行個體,以提升效能和穩定性。
增加排程器數量不一定能改善 Airflow 效能。舉例來說,與其使用兩個排程器,不如只使用一個排程器,這樣可能會提供更好的效能。當未使用額外排程器時,就可能發生這種情況,因此會消耗環境資源,但不會提升整體效能。實際的排程器效能取決於 Airflow 工作站數量、在環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。
建議您先使用兩個排程器,然後監控環境效能。如果您變更排程器數量,隨時可以將環境調整回原始的排程器數量。
如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件。
展開「Networking, Airflow config overrides, and additional features」項目。
在「Cloud SQL 設定」專區中,選擇「Cloud SQL 機型」。
這個參數會決定執行 Airflow 資料庫的 Cloud SQL 執行個體機器類型。預設的 Cloud SQL 機器類型為
db-n1-standard-2
。在「網路伺服器設定」專區中,選擇「網路伺服器機型」。
這個參數會決定執行 Airflow 網路伺服器的 Compute Engine 執行個體機器類型。
預設的網路伺服器機型為
composer-n1-webserver-2
。
gcloud
建立環境時,下列引數會控制環境規模和效能參數:
--node-count
可指定環境中的節點數量。節點數是環境叢集中的 Google Kubernetes Engine 節點數。根據預設,環境有 3 個節點。
您可以在建立環境後變更這個值。
--scheduler-count
會指定環境中的排程器數量。您的環境可以同時執行多個 Airflow 排程器。使用多個排程器可以將負載分配到多個排程器執行個體,以提升效能和穩定性。
增加排程器數量不一定能改善 Airflow 效能。舉例來說,與其使用兩個排程器,不如只使用一個排程器,這樣可能會提供更好的效能。當未使用額外排程器時,就可能發生這種情況,因此會消耗環境資源,但不會提升整體效能。實際的排程器效能取決於 Airflow 工作站數量、在環境中執行的 DAG 和工作數量,以及 Airflow 和環境的設定。
建議您先使用兩個排程器,然後監控環境效能。如果您變更排程器數量,隨時可以將環境調整回原始的排程器數量。
如要進一步瞭解如何設定多個排程器,請參閱 Airflow 說明文件。
--disk-size
會指定環境 VM 的磁碟大小。環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都擁有這麼多磁碟空間。如果您想在與環境 VM 同步的資料夾中儲存大量資料,請選取較大的磁碟大小。例如,在環境值區的
/data
資料夾中。大小下限為 30 GB。預設大小為 100 GB。建立環境後,您就無法變更這個參數。
--machine-type
會指定節點 VM 的機器類型。節點的機器類型是用於叢集執行個體的 Compute Engine 機器類型。這個參數會決定環境的 CPU 數和記憶體量。預設機器類型為
n1-standard-1
。如要在建立環境後變更這個值,您必須手動重新設定環境叢集。
--cloud-sql-machine-type
可指定 Cloud SQL 執行個體的機器類型。這個參數會決定執行 Airflow 資料庫的 Cloud SQL 執行個體機器類型。預設的 Cloud SQL 機器類型為
db-n1-standard-2
。--web-server-machine-type
會指定 Airflow 網路伺服器執行個體的機器類型。這個參數會決定執行 Airflow 網路伺服器的 Compute Engine 執行個體機器類型。
預設的網路伺服器機型為
composer-n1-webserver-2
。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone NODE_ZONE \
--node-count NODE_COUNT \
--scheduler-count SCHEDULER_COUNT \
--disk-size DISK_SIZE \
--machine-type NODE_MACHINE_TYPE \
--cloud-sql-machine-type SQL_MACHINE_TYPE \
--web-server-machine-type WS_MACHINE_TYPE
取代:
NODE_COUNT
與節點數量。NODE_ZONE
與環境 VM 的 Compute Engine 區域。SCHEDULER_COUNT
與排程器數量。DISK_SIZE
環境 VM 的磁碟大小,以 GB 為單位。NODE_MACHINE_TYPE
與節點 VM 的機器類型。SQL_MACHINE_TYPE
與 Cloud SQL 執行個體的機器類型。WS_MACHINE_TYPE
與 Airflow 網路伺服器執行個體的機器類型。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--node-count 6 \
--scheduler-count 1 \
--disk-size 50 \
--machine-type n1-standard-2 \
--cloud-sql-machine-type db-n1-standard-2 \
--web-server-machine-type composer-n1-webserver-2
API
建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中,指定環境規模和效能參數。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeCount": NODE_COUNT,
"nodeConfig": {
"machineType": "NODE_MACHINE_TYPE",
"diskSizeGb": DISK_SIZE,
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"schedulerCount": SCHEDULER_COUNT
},
"databaseConfig": {
"machineType": "SQL_MACHINE_TYPE"
},
"webServerConfig": {
"machineType": "WS_MACHINE_TYPE"
}
}
}
取代:
NODE_COUNT
與節點數量。DISK_SIZE
環境 VM 的磁碟大小,以 GB 為單位。NODE_MACHINE_TYPE
與節點 VM 的機器類型。這個值必須包含環境 VM 的區域。SCHEDULER_COUNT
與排程器數量。SQL_MACHINE_TYPE
與 Cloud SQL 執行個體的機器類型。WS_MACHINE_TYPE
與 Airflow 網路伺服器執行個體的機器類型。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeCount": 6,
"nodeConfig": {
"machineType": "projects/example-project/zones/us-central1-a/machineTypes/n1-standard-2",
"diskSizeGb": 50,
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"schedulerCount": 1
},
"databaseConfig": {
"machineType": "db-n1-standard-2"
},
"webServerConfig": {
"machineType": "composer-n1-webserver-2"
}
}
}
Terraform
建立環境時,下列欄位會控制環境規模和效能參數:
node_config
區塊中的node_count
會指定環境中的節點數量。節點數是環境叢集中的 Google Kubernetes Engine 節點數。根據預設,環境有 3 個節點。
您可以在建立環境後變更這個值。
node_config
區塊中的disk_size_gb
會指定環境 VM 的磁碟大小。環境節點的磁碟大小 (以 GB 為單位)。環境中的每個節點都擁有這麼多磁碟空間。如果您想在與環境 VM 同步的資料夾中儲存大量資料,請選取較大的磁碟大小。例如,在環境值區的
/data
資料夾中。大小下限為 30 GB。預設大小為 100 GB。建立環境後,您就無法變更這個參數。
node_config
區塊中的machine_type
會指定節點 VM 的機器類型。指定這個欄位時,請在zone
欄位中為環境 VM 提供 Compute Engine 區域。節點的機器類型是用於叢集執行個體的 Compute Engine 機器類型。這個參數會決定環境的 CPU 數和記憶體量。預設機器類型為
n1-standard-1
。如要在建立環境後變更這個值,您必須手動重新設定環境叢集。
database_config
區塊中的machine_type
會指定 Cloud SQL 執行個體的機器類型。這個參數會決定執行 Airflow 資料庫的 Cloud SQL 執行個體機器類型。預設的 Cloud SQL 機器類型為
db-n1-standard-2
。web_server_config
區塊中的machine_type
會指定 Airflow 網路伺服器執行個體的機器類型。這個參數會決定執行 Airflow 網路伺服器的 Compute Engine 執行個體機器類型。
預設的網路伺服器機型為
composer-n1-webserver-2
。software_config
區塊中的scheduler_count
欄位會指定環境中的排程器數量。您的環境必須使用 Airflow 2。
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
node_count = NODE_COUNT
disk_size_gb = DISK_SIZE
machine_type = "NODE_MACHINE_TYPE"
zone = "NODE_ZONE"
service_account = "SERVICE_ACCOUNT"
}
software_config {
scheduler_count = SCHEDULER_COUNT
}
database_config {
machine_type = "SQL_MACHINE_TYPE"
}
web_server_config {
machine_type = "WS_MACHINE_TYPE"
}
}
}
取代:
NODE_COUNT
與節點數量。DISK_SIZE
環境 VM 的磁碟大小,以 GB 為單位。NODE_MACHINE_TYPE
搭配節點 VM 的機器類型。NODE_ZONE
與環境 VM 的 Compute Engine 區域。SCHEDULER_COUNT
與排程器數量。SQL_MACHINE_TYPE
與 Cloud SQL 執行個體的機器類型。WS_MACHINE_TYPE
與 Airflow 網路伺服器執行個體的機器類型。
範例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
node_count = 4
disk_size_gb = 100
zone = "us-central1-a"
machine_type = "n1-standard-2"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
scheduler_count = 2
}
database_config {
machine_type = "db-n1-standard-2"
}
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}
}
步驟 4:(選用) 設定環境的網路
網路參數取決於您要建立的環境類型:
公開 IP 環境。使用預設網路參數。
私人 IP 環境 (虛擬私有雲網路對等互連)。在這種設定中,環境會使用虛擬私有雲對等互連連線。
設定私人 IP 環境:
- 為私人 IP 環境設定專案網路。
- 指定私人 IP 環境的其他參數,如本節所述。
對於含有虛擬私有雲對等互連的私人 IP 環境,您需要瞭解:
- 您的虛擬私有雲網路 ID
- 您的虛擬私有雲子網路 ID
虛擬私有雲子網路中的兩個次要 IP 範圍:
- pod 的次要 IP 範圍
- 服務的次要 IP 範圍
環境元件的 IP 範圍:
- GKE 控制層的 IP 範圍。
- 網路伺服器 IP 範圍。
- Cloud SQL 執行個體的 IP 範圍。
對於共用虛擬私有雲環境,您必須為主專案進行額外的網路設定,然後在服務專案中建立公開或私人 IP 環境。請按照「設定共用虛擬私有雲」頁面上的操作說明進行。
對於共用虛擬私有雲環境,您需要瞭解:
- 主專案的 VPC 網路 ID
主機專案的虛擬私有雲子網路 ID
主機專案 VPC 子網路中的兩個次要 IP 範圍:
- pod 的次要 IP 範圍
- 服務的次要 IP 範圍
建立共用虛擬私人雲端網路的公開 IP 環境時,您仍需要為 Pod 和服務指定主專案 VPC 網路、子網路和次要 IP 範圍。
如要建立 VPC SC 環境,您必須建立服務範圍,然後在該範圍內建立私人 IP 環境。請按照「設定 VPC Service Controls」一文中的指示操作。
環境的其他網路選項如下:
- 私人使用的公開 IP 位址。如果您想使用更多 IP 位址,環境可以私下使用特定公開 IP 位址範圍,做為 Pod 和服務的內部子網路 IP 位址範圍。
- 授權網路。如果您想使用 HTTPS 存取私人 IP 環境的控制層,可以使用授權網路指定可執行此操作的 CIDR 範圍。
- IP 偽裝代理程式。使用含有 IP 偽裝代理程式的環境,即可在環境的網路設定中使用多對一 IP 位址轉譯。如要進一步瞭解如何使用 IP 偽裝代理程式建立環境,請參閱「啟用 IP 偽裝代理程式」。
主控台
如要建立私人 IP 環境,請按照下列步驟操作:
請確認網路已針對要建立的環境類型進行設定。
展開「Networking, Airflow config overrides, and additional features」項目。
在「網路設定」區段中,選取「Enable VPC-native (using alias-IP)」核取方塊。
在「Network」下拉式選單中,選取 VPC 網路 ID。
在「Subnetwork」下拉式清單中,選取 VPC 子網路 ID。
在「Pod IP Address Allocation」(Pod IP 位址分配) 部分,指定 Pod 的次要 IP 範圍。您可以使用虛擬私有雲網路中現有的次要範圍,也可以使用 CIDR 標記法指定新的範圍。
在「Service IP Address Allocation」(服務 IP 位址分配) 部分,指定服務的次要 IP 範圍。您可以使用虛擬私有雲網路中現有的次要範圍,也可以使用 CIDR 標記法指定新的範圍。
在「Private IP」專區中,勾選「Enable private IP」核取方塊。
在「GKE 叢集主要執行個體私人 IP」部分,指定 GKE 控制層的 IP 範圍:
如要為環境所在的地區使用預設 IP 範圍,請選取「預設 IP 範圍」。
如要指定自訂 IP 範圍,請選取「自訂 IP 範圍」,然後在「GKE 叢集主要執行個體私人 IP」欄位中,以 CIDR 標記法輸入範圍。
選取 GKE 控制層的存取層級。控制層有兩個端點。一個端點是私有的,供叢集節點和 VM 使用。另一個端點是公開的。您可以指定公開端點的存取層級:
如要啟用從授權網路存取公開端點的功能,請勾選「透過外部 IP 位址存取主要執行個體端點」核取方塊。
使用這個選項可將控制層的存取層級設為「啟用公開端點存取權,啟用授權網路」。這樣一來,您就能從授權網路存取控制層,根據預設,系統不會指定來源 IP 位址。您可以將授權網路新增至叢集。
如要停用從授權網路存取公開端點的功能,請取消勾選「透過外部 IP 位址存取主要執行個體端點」核取方塊。
在「網路伺服器私人 IP」部分,指定 Airflow 網路伺服器執行個體的 IP 範圍。
在「Cloud SQL 私人 IP」部分,指定 Cloud SQL 執行個體的 IP 範圍。
gcloud
請確認網路已針對要建立的環境類型進行設定。
建立環境時,下列引數會控制網路參數。如果省略參數,系統會使用預設值。
--enable-private-environment
會啟用私人 IP 環境。--enable-ip-alias
會使用別名 IP 位址啟用虛擬私有雲原生叢集。使用
--enable-private-environment
或為 Pod 和服務設定次要範圍時,必須使用這個參數。--network
會指定您的 VPC 網路 ID。--subnetwork
會指定您的 VPC 子網路 ID。--cluster-secondary-range-name
或--cluster-ipv4-cidr
會設定 Pod 的次要範圍。--services-secondary-range-name
或--services-ipv4-cidr
設定服務的次要範圍。--master-ipv4-cidr
可指定 GKE 控制層的範圍。
--web-server-ipv4-cidr
會為 Airflow 網路伺服器例項指定範圍。--cloud-sql-ipv4-cidr
會指定 Cloud SQL 執行個體的範圍。
--enable-private-endpoint
可控制 GKE 控制層的存取層級。控制層有兩個端點。一個端點是私有的,供叢集節點和 VM 使用。另一個端點是公開的。您可以指定公開端點的存取層級:如要允許從已授權的網路存取公開端點,請省略
--enable-private-endpoint
引數。使用這個選項可將控制層的存取層級設為「啟用公開端點存取權,啟用授權網路」。這樣一來,您就能從授權網路存取控制層,根據預設,系統不會指定來源 IP 位址。您可以將授權網路新增至叢集。
如要禁止從已授權的網路存取公開端點,請指定
--enable-private-endpoint
引數。
--enable-master-authorized-networks
和--master-authorized-networks
引數會為環境設定授權網路。--enable-privately-used-public-ips
會為您的環境設定私人使用的公開 IP 位址。--enable-ip-masq-agent
啟用 IP 偽裝代理程式。
範例 (私人 IP 環境)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--enable-ip-alias \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
--cluster-ipv4-cidr PODS_RANGE \
--services-ipv4-cidr SERVICES_RANGE \
--master-ipv4-cidr CONTROL_PLANE_RANGE \
--web-server-ipv4-cidr WEB_SERVER_RANGE \
--cloud-sql-ipv4-cidr SQL_RANGE
取代:
- 將
NETWORK_ID
改成您的虛擬私有雲網路 ID。 SUBNETWORK_ID
與您的虛擬私有雲子網路 ID。PODS_RANGE
與 Pod 的次要範圍。SERVICES_RANGE
與服務的次要範圍。CONTROL_PLANE_RANGE
與 GKE 控制層的次要範圍。WEB_SERVER_RANGE
與 Airflow 網路伺服器執行個體的次要範圍。SQL_RANGE
與 Cloud SQL 執行個體的範圍。
步驟 5:(選用) 新增網路標記
網路標記會套用至環境叢集中的所有節點 VM。標記可用於識別網路防火牆的有效來源或目標。清單中的每個標記都必須符合 RFC 1035。
舉例來說,如果您打算使用防火牆規則限制私人 IP 環境的流量,可能就需要新增網路標記。
主控台
在「Create environment」頁面中,執行下列操作:
- 找出「節點設定」部分。
- 在「Tags」欄位中,指定節點 VM 的執行個體標記。
gcloud
建立環境時,下列引數會控制網路標記:
--tags
會指定套用至所有節點 VM 的網路標記逗號分隔清單。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
取代:
TAGS
,其中包含以半形逗號分隔的網路標記清單。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--tags group1,production
API
建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中,指定環境的網路代碼。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
取代:
TAG
搭配網路標記。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"tags": [
"group1",
"production"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
建立環境時,請使用下列欄位定義環境的網路標記:
node_config
區塊中的tags
欄位會指定以半形逗號分隔的網路標記清單,這些標記會套用至所有節點 VM。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
取代:
TAGS
,其中包含以半形逗號分隔的網路標記清單。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
tags = ["group1","production"]
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
步驟 6:(選用) 設定網路伺服器網路存取權
Airflow 網路伺服器存取參數不受環境類型影響。您可以改為個別設定 Web 伺服器存取權。舉例來說,私人 IP 環境仍可透過網際網路存取 Airflow UI。
您無法使用私人 IP 位址設定允許的 IP 範圍。
主控台
在「Create environment」頁面的「Web server configuration」部分中:
如要允許從所有 IP 位址存取 Airflow 網路伺服器,請選取「允許所有 IP 位址傳出的存取要求」。
如要只限制存取特定 IP 範圍,請選取「只允許來自特定 IP 位址的存取要求」。在「IP 範圍」欄位中,以 CIDR 標記法指定 IP 範圍。在「說明」欄位中,指定這個範圍的說明 (選填)。如要指定多個範圍,請按一下「新增 IP 範圍」。
如要禁止所有 IP 位址的存取權,請選取「只允許來自特定 IP 位址的存取要求」,然後按一下空白範圍項目旁的「刪除項目」。
gcloud
建立環境時,下列引數會控管網路伺服器存取層級:
--web-server-allow-all
可讓所有 IP 位址存取 Airflow。這是預設選項。--web-server-allow-ip
會限制只允許特定來源 IP 範圍的存取。如要指定多個 IP 範圍,請多次使用這個引數。--web-server-deny-all
會禁止所有 IP 位址的存取權。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
取代:
WS_IP_RANGE
與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。WS_RANGE_DESCRIPTION
,其中包含 IP 範圍的說明。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
建立環境時,請在「環境」>「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
與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。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
與可存取 Airflow UI 的 IP 範圍 (以 CIDR 標記法表示)。WS_RANGE_DESCRIPTION
,其中包含 IP 範圍的說明。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
步驟 7:(選用) 指定 Airflow 設定覆寫值和環境變數
您可以在建立環境時設定 Airflow 覆寫設定和環境變數。或者,您也可以在建立環境後再執行這項操作。
部分 Airflow 設定選項遭到封鎖,因此您無法覆寫這些選項。
如需可用的 Airflow 設定選項清單,請參閱 Airflow 2 設定參考資料和 Airflow 1.10.*。
如要指定 Airflow 設定覆寫和環境變數,請按照下列步驟操作:
主控台
在「Create environment」頁面中,執行下列操作:
展開「Networking, Airflow config overrides, and additional features」項目。
在「環境變數」區段中,按一下「新增環境變數」。
輸入環境變數的「名稱」和「值」。
在「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-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
取代:
ENV_VARS
包含以半形逗號分隔的環境變數NAME=VALUE
組合清單。CONFIG_OVERRIDES
包含以逗號分隔的SECTION-KEY=VALUE
組合清單,用於設定覆寫。請使用-
符號分隔設定區段名稱,後方依序加上鍵名。例如:core-dags_are_paused_at_creation
。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
--airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB
API
建立環境時,請在「環境」>「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
"
}
}
}
步驟 8:(選用) 指定維護期間
根據預設,如果您使用Google Cloud 主控台、API 或 Terraform 建立 Cloud Composer 1 環境,則該環境不會有定義的維護時間。建議您為新的和現有環境指定維護期間。
如果您使用 gcloud CLI 建立環境,則環境的預設維護期間為每週五、六和日的 00:00:00 到 04:00:00 (GMT)。
如要為環境指定自訂維護期間,請按照下列步驟操作:
主控台
在「Create environment」頁面中,執行下列操作:
展開「Networking, Airflow config overrides, and additional features」項目。
在「維護期間」部分中,勾選「自訂維護期間的時間」核取方塊。
在「時區」下拉式清單中,選擇維護時段的時區。
請設定開始時間、天數和長度,讓指定時間表的總時間在 7 天滾動視窗中至少為 12 小時。例如,每週一、週三和週五的 4 小時期間可提供所需的時間。
gcloud
下列引數可定義維護期間參數:
--maintenance-window-start
會設定維護期間的開始時間。--maintenance-window-end
會設定維護期間的結束時間。--maintenance-window-recurrence
會設定維護期間週期。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
取代:
- 將
ENVIRONMENT_NAME
替換為環境的名稱。 DATETIME_START
的開始日期和時間,以日期/時間輸入格式表示。系統只會使用當天指定的時間,而忽略指定的日期。DATETIME_END
結束日期和時間,格式為日期/時間輸入格式。系統只會使用當天指定的時間,而忽略指定的日期。指定的日期和時間必須晚於開始日期。MAINTENANCE_RECURRENCE
搭配 RFC 5545 RRULE,用於維護時段重複作業。Cloud Composer 支援兩種格式:FREQ=DAILY
格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式會指定在所選星期幾重複發生的事件。
以下範例指定星期三、星期六和星期日的 01:00 到 07:00 (世界標準時間) 之間的 6 小時維護期間。系統會忽略 2023 年 1 月 1 日的日期。
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
建立環境時,請在 Environment > 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
格式會指定在所選星期幾重複發生的事件。
以下範例指定星期三、星期六和星期日的 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。Cloud Composer 支援兩種格式:FREQ=DAILY
格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式會指定在所選星期幾重複發生的事件。
以下範例指定星期三、星期六和星期日的 01:00 到 07:00 (世界標準時間) 之間的 6 小時維護期間。系統會忽略 2023 年 1 月 1 日的日期。
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
步驟 9:(選用) 設定資料加密 (CMEK)
根據預設,環境中的資料會使用 Google 提供的金鑰加密。
如要使用客戶自行管理的加密金鑰 (CMEK) 加密環境中的資料,請按照「使用客戶自行管理的加密金鑰」一文中的指示操作。
步驟 10:(選用) 指定環境標籤
您可以為環境指派標籤,根據這些標籤細分帳單費用。
主控台
在「Create environment」頁面中,執行下列操作:
展開「Networking, Airflow config overrides, and additional features」項目。
在「標籤」部分中,按一下「新增標籤」。
在「Key」和「Value」欄位中,指定環境標籤的鍵/值組合。
gcloud
建立環境時,--labels
引數會指定以逗號分隔的鍵/值清單,並附上環境標籤。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
取代:
LABELS
包含環境標籤的半形逗號分隔KEY=VALUE
組合清單。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--labels owner=engineering-team,env=production
API
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"labels": {
"LABEL_KEY": "LABEL_VALUE"
}
}
取代:
LABEL_KEY
與環境標籤的鍵。LABEL_VALUE
,其值為環境標籤。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"labels": {
"owner": "engineering-team",
"env": "production"
}
}
Terraform
建立環境時,請在 labels
區塊 (config
區塊外) 中指定標籤。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
labels = {
LABEL_KEY = "LABEL_VALUE"
}
}
取代:
LABEL_KEY
與環境標籤的鍵。LABEL_VALUE
,其值為環境標籤。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
labels = {
owner = "engineering-team"
env = "production"
}
}
步驟 11:(選用) 設定其他參數
其他參數包括:
環境節點的區域
要部署叢集節點的 Compute Engine 區域。在這個參數中,您可以選取環境位置中的特定區域。
系統預設會自動選取隨機區域。
個 OAuth 範圍
OAuth 範圍是一組可供所有節點 VM 使用的 Google API 範圍。如果留空,則預設為
https://www.googleapis.com/auth/cloud-platform
。如果您指定自訂 OAuth 範圍,請在指定範圍清單中加入
https://www.googleapis.com/auth/cloud-platform
。Python 版本
如果您的環境使用 Airflow 1.10.* 及更早的 Airflow 版本,您可以讓環境使用 Python 2。預設的 Python 版本為 Python 3。如要進一步瞭解 Cloud Composer 中的 Python 2 支援,請參閱「支援的 Python 版本」。
主控台
在「Create environment」頁面中,執行下列操作:
在「節點設定」部分中:
在「Zone」下拉式清單中,為環境節點選取可用區。
區域一經設定即無法變更。
在「OAuth 範圍」欄位中,指定節點 VM 的 OAuth 範圍。
您無法在日後變更 OAuth 權限範圍。
如要指定多個 OAuth 範圍,請提供以半形逗號分隔的值清單。在指定範圍清單中加入
https://www.googleapis.com/auth/cloud-platform
。在「Python 版本」欄位中,選擇 Python 版本。
您之後無法變更 Python 版本。
gcloud
建立環境時,下列引數會控制環境的其他參數:
--zone
會為環境 VM 指定 Compute Engine 區域。--oauth-scopes
會指定以逗號分隔的 OAuth 範圍清單。在指定範圍清單中加入https://www.googleapis.com/auth/cloud-platform
。--python-version
會指定 Python 版本。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone ZONE \
--oauth-scopes OAUTH_SCOPES \
--python-version PYTHON_VERSION
取代:
ZONE
與 Compute Engine 可用區名稱。OAUTH_SCOPES
與以半形逗號分隔的 OAuth 範圍清單。PYTHON_VERSION
與 Python 版本 (3
或2
)。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery \
--python-version 3
API
建立環境時,請在「環境」>「EnvironmentConfig」EnvironmentConfig資源中,指定環境的其他參數。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"location": "projects/PROJECT_ID/zones/ZONE",
"oauthScopes": [
"OAUTH_SCOPE"
],
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"pythonVersion": "PYTHON_VERSION"
}
}
}
取代:
ZONE
與 Compute Engine 可用區名稱。OAUTH_SCOPE
與 OAuth 範圍。如要指定其他範圍,請新增https://www.googleapis.com/auth/cloud-platform
範圍,後面接著是其他範圍項目。PYTHON_VERSION
與 Python 版本 (3
或2
)。
範例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"location": "projects/example-project/zones/us-central1-a",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/bigquery"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"pythonVersion": "3"
}
}
}
Terraform
建立環境時,下列欄位會控制環境的其他參數:
node_config
區塊中的zone
欄位會指定環境 VM 的 Compute Engine 區域。node_config
區塊中的oauth_scopes
欄位會指定以半形逗號分隔的 OAuth 範圍清單。software_config
區塊中的python_version
欄位會指定 Python 版本。
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
zone = "ZONE"
oauth_scopes = "[OAUTH_SCOPES]"
service_account = "SERVICE_ACCOUNT"
}
software_config {
python_version = "PYTHON_VERSION"
}
}
}
取代:
ZONE
與 Compute Engine 可用區名稱。OAUTH_SCOPES
與以半形逗號分隔的 OAuth 範圍清單。PYTHON_VERSION
與 Python 版本 (3
或2
)。
範例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
zone = "us-central1-a"
oauth_scopes = "[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery]"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
python_version = "3"
}
}
}
步驟 12:(選用) 強制使用 Beta 版 API
即使環境沒有任何預覽功能,您也可以明確讓環境使用 Cloud Composer Beta 版 API。這樣一來,系統會使用 v1beta1
服務端點建立環境。
主控台
在「Create environment」頁面中,執行下列操作:
展開「Networking, Airflow config overrides, and additional features」項目。
在「Beta API」專區中,選取「強制使用 Beta 版 API」核取方塊。
gcloud
使用 gcloud beta composer
指令建立環境。
API
使用 v1beta1
服務端點建立環境。
Terraform
Cloud Composer 的 Terraform 供應器預設會使用 Beta 版 API。