在 Managed Airflow 環境中啟用 IP 偽裝代理程式

代管 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 位址空間。

例如:

  1. 您將 10.0.0.0/8 範圍用於 VM,且防火牆規則僅允許這個範圍。

  2. 如要節省網路範圍,請為環境叢集中的 Pod 使用不同的範圍 (例如 192.168.0.0/16)。

  3. 如要從 Pod (Airflow worker) 連線至任何服務,必須進行 IP 偽裝,否則服務會收到來自 192.168.0.0/16 的流量,並因防火牆規則而捨棄。啟用並設定 IP 偽裝代理程式後,服務會收到來自 10.0.0.0/8 的要求,並接受這些要求。

事前準備

  • 無法在 Google Cloud 控制台啟用 IP 偽裝代理。

為現有環境啟用 IP 偽裝代理

無法為現有環境啟用 IP 偽裝代理程式。

建立環境時啟用 IP 偽裝代理程式

建立環境時,您可以啟用 IP 偽裝代理程式。

如要進一步瞭解如何建立 Managed Airflow 環境,請參閱「建立環境」。

控制台

無法在 Google Cloud 控制台啟用 IP 偽裝代理程式。

gcloud

建立環境時,--enable-ip-masq-agent 引數會啟用 IP 偽裝代理程式。您也必須使用 --enable-ip-alias 引數啟用 IP 別名。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --service-account "SERVICE_ACCOUNT" \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --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-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-ip-masq-agent

API

建構 environments.create API 要求。在 Environment 資源中指定設定。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-1.20.12-airflow-1.10.15"
    },
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
      },
      "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-1.20.12-airflow-1.10.15"
      },
      "nodeConfig": {
        "ipAllocationPolicy": {
          "useIpAliases": true,
        },
        "serviceAccount": "example-account@example-project.iam.gserviceaccount.com"
        "enableIpMasqAgent": true
      }
    }
  }

Terraform

建立環境時,node_config 區塊中的 enable_ip_masq_agent 欄位會啟用 IP 偽裝代理程式。您也必須在 ip_allocation_policy 區塊中使用 use_ip_aliases 欄位啟用 IP 別名。

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "composer-1.20.12-airflow-1.10.15"
    }
    node_config {
      ip_allocation_policy = [{
        use_ip_aliases = true
        // Other networking configuration
      }]
      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-1.20.12-airflow-1.10.15"
    }
    node_config {
      ip_allocation_policy = [{
        use_ip_aliases = true
        // Other networking configuration
      }]
      service_account = "example-account@example-project.iam.gserviceaccount.com"
      enable_ip_masq_agent = true
    }
  }
}

設定 IP 偽裝代理程式

如要進一步瞭解如何在 Managed Airflow (舊版第 1 代) 中使用及設定 IP 偽裝代理程式,請參閱「在標準叢集中設定 IP 偽裝代理程式」。

後續步驟