代管 Airflow (第 3 代) | 代管 Airflow (第 2 代) | 代管 Airflow (舊版第 1 代)
本頁說明如何為環境啟用 IP 偽裝代理程式。
關於 Managed Airflow 的 IP 偽裝代理程式
Managed Airflow 支援環境的 IP 偽裝代理程式。
「IP 偽裝」是一種網路位址轉譯 (NAT) 形式,用於執行多對一的 IP 位址轉譯。這樣一來,多個用戶端就能從單一 IP 位址存取目的地。
Managed Airflow 會在 GKE 上執行工作負載。為確保功能正常運作,您必須提供節點 (VM) 以及 GKE Pod 和 Service 的 IP 範圍。Airflow DAG 和任務與其他服務通訊時,會使用 Pod IP,且這些 Pod IP 範圍必須能與任務互動的任何目的地之間進行轉送。
使用 IP 偽裝代理程式,您可以選擇將 Pod IP 位址轉譯為節點 IP 位址,這樣一來,Airflow DAG 和任務指定的目的地和服務,就只會接收來自節點 IP 位址 (而非 Pod IP 位址) 的封包。如果環境預期只會接收來自節點 IP 位址的封包,或 Pod IP 範圍無法在叢集外轉送,這項功能就非常實用。
此外,您可以使用 IP 偽裝代理程式,在網路設定中儲存網路範圍。舉例來說,您可以為環境叢集內的 Pod 使用獨立網路範圍,並將這類流量偽裝成來自節點 IP 位址範圍。這樣一來,您就能使用不同範圍的 IP 位址,為環境叢集中的 Pod 分配 IP 位址,節省某個範圍的 IP 位址空間。
例如:
您將
10.0.0.0/8範圍用於 VM,且防火牆規則僅允許這個範圍。如要節省網路範圍,請為環境叢集中的 Pod 使用不同的範圍 (例如
192.168.0.0/16)。如要從 Pod (Airflow worker) 連線至任何服務,必須進行 IP 偽裝,否則服務會收到來自
192.168.0.0/16的流量,並因防火牆規則而捨棄。啟用並設定 IP 偽裝代理程式後,服務會收到來自10.0.0.0/8的要求,並接受這些要求。
事前準備
無法在 Google Cloud 控制台啟用 IP 偽裝代理。
如要使用這項功能,您必須使用 GKE 1.22.7 以上版本建立環境。
在舊版 GKE 中建立的環境無法使用 IP 偽裝代理程式,即使 GKE 已升級至 1.22.7 以上版本也一樣。
如果啟用 IP 偽裝代理程式,預設的 GKE EgressNatPolicy 會替換為 Managed Airflow 的定義。如果未啟用 IP 偽裝代理程式,傳出流量就不會偽裝,並會使用預設的 GKE EgressNatPolicy。
為現有環境啟用 IP 偽裝代理
無法為現有環境啟用 IP 偽裝代理程式。
建立環境時啟用 IP 偽裝代理程式
建立環境時,您可以啟用 IP 偽裝代理程式。
如要進一步瞭解如何建立 Managed Airflow 環境,請參閱「建立環境」。
控制台
無法在 Google Cloud 控制台啟用 IP 偽裝代理。
gcloud
建立環境時,--enable-ip-masq-agent 引數會啟用 IP 偽裝代理程式。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--service-account "SERVICE_ACCOUNT" \
--image-version composer-2.17.16-airflow-2.11.1 \
--enable-ip-masq-agent
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 - 將
SERVICE_ACCOUNT替換為環境的服務帳戶。
範例:
gcloud composer environments create example-environment \
--location us-central1 \
--service-account "example-account@example-project.iam.gserviceaccount.com" \
--image-version composer-2.17.16-airflow-2.11.1 \
--enable-ip-masq-agent
API
建構 environments.create API 要求。在 Environment 資源中指定設定。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "composer-2.17.16-airflow-2.11.1"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
"enableIpMasqAgent": true
}
}
}
更改項目:
PROJECT_ID替換為專案 ID。- 將
LOCATION替換為環境所在的區域。 ENVIRONMENT_NAME:環境名稱。- 將
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.16-airflow-2.11.1"
},
"nodeConfig": {
"serviceAccount": "example-account@example-project.iam.gserviceaccount.com"
"enableIpMasqAgent": true
}
}
}
Terraform
建立環境時,node_config 區塊中的 enable_ip_masq_agent 欄位會啟用 IP 偽裝代理程式。
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "composer-2.17.16-airflow-2.11.1"
}
node_config {
service_account = "SERVICE_ACCOUNT"
enable_ip_masq_agent = true
}
}
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 - 將
SERVICE_ACCOUNT替換為環境的服務帳戶。
範例:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-2.17.16-airflow-2.11.1"
}
node_config {
service_account = "example-account@example-project.iam.gserviceaccount.com"
enable_ip_masq_agent = true
}
}
}
設定 IP 偽裝代理程式
如要進一步瞭解如何在 Managed Airflow (第 2 代) 中使用及設定 IP 偽裝代理程式,請參閱「使用輸出 NAT 政策在 Autopilot 叢集中設定 IP 偽裝」。