在 Cloud Composer 环境中启用 IP 伪装代理

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

本页面介绍了如何为您的环境启用 IP 伪装代理。

Cloud Composer 中的 IP 伪装代理简介

Cloud Composer 支持为您的环境使用 IP 伪装代理

IP 伪装是一种网络地址转换 (NAT) 形式,用于执行多对一 IP 地址转换,从而允许多个客户端使用一个 IP 地址访问目标。

Cloud Composer 在 GKE 上运行工作负载。为正常运行,它需要节点(虚拟机)以及 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. 您为虚拟机使用 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 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 伪装代理。您还必须在 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 伪装代理

如需详细了解如何使用和配置 IP 伪装代理,请参阅 Cloud Composer 1,请参阅 在标准集群中配置 IP 伪装代理

后续步骤