在 Cloud Composer 環境中啟用 IP 偽裝代理程式

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer„�

本頁說明如何為環境啟用 IP 偽裝代理程式。

Cloud Composer 中的 IP 偽裝代理程式簡介

Cloud Composer 支援環境的 IP 位址偽裝代理程式

「IP 偽裝」是一種網路位址轉譯 (NAT) 形式,用於執行多對一的 IP 位址轉譯。這樣一來,多個用戶端就能透過單一 IP 位址存取目的地。

Cloud Composer 會在 GKE 上執行工作負載。如要正常運作,必須為節點 (VM) 以及 GKE Pod 和服務提供 IP 範圍。Airflow DAG 和工作與其他服務通訊時,會使用 Pod IP,而這些 Pod IP 範圍必須可路由傳送至工作互動的任何目的地,以及從這些目的地路由傳送。

使用 IP Masquerade 代理程式時,您可以選擇將 Pod IP 位址轉換為節點 IP 位址,這樣從 Airflow DAG 和工作鎖定的目的地和服務,就只會收到來自節點 IP 位址的封包,而不是 Pod IP 位址。如果環境預期只會接收來自節點 IP 位址的封包,或 Pod IP 範圍無法在叢集外部路由傳輸,這項功能就非常實用。

此外,您也可以使用 IP 偽裝代理程式,將網路範圍儲存在網路設定中。舉例來說,您可以為環境叢集內的 Pod 使用不同的網路範圍,並將這類流量偽裝成來自節點 IP 位址範圍。這樣一來,您就能在一個範圍內節省 IP 位址空間,並為環境叢集中的 Pod 使用不同範圍的 IP 位址。

例如:

  1. 您使用 VM 的 10.0.0.0/8 範圍,且防火牆規則只允許這個範圍。

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

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

事前準備

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

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

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

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

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

如要進一步瞭解如何建立 Cloud Composer 環境,請參閱「建立環境」一文。

主控台

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

gcloud

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-ip-masq-agent

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --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,
      },
      "enableIpMasqAgent": true
    }
  }
}

取代:

  • PROJECT_ID 替換為專案 ID
  • LOCATION 改成環境所在的地區。
  • ENVIRONMENT_NAME 替換為環境名稱。

範例:

  // 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,
        },
        "enableIpMasqAgent": true
      }
    }
  }

Terraform

建立環境時,node_config 區塊中的 enable_ip_masq_agent 欄位會啟用 IP Masqerade 代理程式。 您也必須在 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
      }]
      enable_ip_masq_agent = true
    }
  }

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。

範例:

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
      }]
      enable_ip_masq_agent = true
    }
  }
}

設定 IP 偽裝代理程式

如要進一步瞭解如何在 Cloud Composer 1 中使用及設定 IP 偽裝代理程式,請參閱「在標準叢集中設定 IP 偽裝代理程式」。

後續步驟