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

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何為環境啟用 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 假冒代理程式將 Pod IP 位址轉譯為節點 IP 位址,讓從 Airflow DAG 和工作指定的目的地和服務只接收來自節點 IP 位址的封包,而非 Pod IP 位址。在只接收來自節點 IP 位址的封包,或 Pod IP 範圍無法在叢集外路由的環境中,這項功能就很實用。

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

例如:

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

  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 Masqerade 代理程式。您也必須使用 --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 偽裝代理程式」。

後續步驟