更改环境网络类型(专用或公共 IP)

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页面介绍了 Managed Airflow(第 3 代)中专用 IP 和公共 IP 环境网络类型之间的区别,并提供了有关切换环境网络类型的说明。

如果您只想在安装 PyPI 软件包时停用或启用互联网访问权限,请参阅 在安装 PyPI 软件包时配置互联网访问权限

如果您想从环境启用对 VPC 网络的访问权限, 请参阅 将环境连接到 VPC 网络

环境网络类型简介

Managed Airflow(第 3 代)使用两种环境网络类型:

  • 公共 IP 网络

    • 环境的 Airflow 组件可以访问互联网。这是默认网络类型。

    • 在公共 IP 环境中,所有流向公共 IP 范围的出站流量都会通过默认互联网网关路由。 此限制包括以非公开方式使用的公共 IP (PUPI) 在 GKE 中使用,因为它们与公共 IP 范围重叠。 因此,原本要发送到 PUPI 地址的流量不会到达您的专用 GKE 地址,而是会路由到公共互联网。 如需启用与 PUPI 范围的连接,我们建议您 将环境切换到专用 IP 网络将其连接到 VPC 网络

    • 公共 IP 环境中的 Airflow 组件会从自动分配的公共 IP 地址和端口建立出站连接。 如果您希望公共 IP 环境使用预先确定的 IP 地址和端口,可以通过 将 VPC 网络连接到环境 并将其切换到专用 IP来实现此目的。 在这种情况下,Managed Airflow 会通过此网络路由除流向 Google 服务的流量之外的所有流量。

  • 专用 IP 网络

    • 与公共 IP 网络相比,专用 IP 网络是一种更安全的选择。

    • 环境的 Airflow 组件无法访问互联网。对于连接到 VPC 网络的环境 ,网络配置 会控制互联网访问权限。

    • 专用 IP 环境通过 private.googleapis.com 范围配置专用 Google 访问通道,从而能够访问此范围支持的 Google API、服务和网域。

      如需了解详情以及通过 private.googleapis.com提供的服务和网域列表,请参阅 Virtual Private Cloud 文档中的 网络配置。

    • 具有 VPC Service Controls 的专用 IP 环境通过 专用 Google 访问通道配置restricted.googleapis.com 范围,从而能够访问此范围 支持的 Google API、服务和网域。

      如需了解详情以及通过 restricted.googleapis.com提供的服务和网域列表,请参阅 Virtual Private Cloud 文档中的 网络配置。

    • 如果专用 IP 环境 连接到自定义 VPC 网络,则所有 流量都会路由到 VPC 网络,但通过专用 Google 访问通道提供给专用 IP 环境的 Google API、服务和网域的流量除外。这种方法 可让 Airflow 组件连接到 以非公开方式使用的公共 IP (PUPI) 在 GKE 中, 因为流量将通过 VPC 网络路由, 而不是发送到公共互联网。

Managed Airflow(第 2 代)网络与 Managed Airflow(第 3 代)网络比较

在 Managed Airflow(第 3 代)中,专用 IP 环境不需要任何配置。

以下 Managed Airflow(第 2 代)网络功能在 Managed Airflow(第 3 代)中不再相关:

Managed Airflow(第 3 代)不支持以下 DNS 配置:

  • Managed Airflow(第 3 代)不支持用户定义的 .internal DNS 区域。如果您为 .internal 创建 DNS 区域,则无法访问该区域。

更改环境网络类型

控制台

  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

  3. 转到环境配置 标签页。

  4. 网络配置 部分中,找到网络类型 项,然后点击修改

  5. 网络类型 对话框中,选择:

    • 公共 IP 环境(默认) 用于公共 IP 网络。
    • 专用 IP 环境 用于专用 IP 网络。
  6. 点击保存

gcloud

以下 Google Cloud CLI 实参会更改环境的网络类型:

  • --enable-private-environment:更改为专用 IP 网络。
  • --disable-private-environment:更改为公共 IP 网络(默认)。

更改为专用 IP 网络:

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --enable-private-environment

更改为公共 IP 网络:

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-private-environment

替换以下内容:

  • ENVIRONMENT_NAME:环境的名称。
  • LOCATION:环境所在的区域。

示例(专用 IP):

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --enable-private-environment

示例(公共 IP):

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --disable-private-environment

API

  1. 创建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.private_environment_config.enable_private_environment 掩码。

    2. 在请求正文的 enablePrivateEnvironment 字段中:

      • 指定 true 以更改为专用 IP 网络。
      • 指定 false 以更改为公共 IP 网络(默认)。

示例(专用 IP):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.private_environment_config.enable_private_environment

"config": {
  "privateEnvironmentConfig": {
    "enablePrivateEnvironment": true
  }
}

Terraform

config 块中的 enable_private_environment 字段用于指定环境的网络类型:

  • true:专用 IP 网络。
  • false 或省略:公共 IP 网络(默认)。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    enable_private_environment = PRIVATE_IP_STATUS

  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • PRIVATE_IP_STATUS:专用 IP 为 true,公共 IP 为 false

示例(专用 IP):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    enable_private_environment = true

    ... other configuration parameters
  }
}

配置代理服务器变量

您可以在环境中设置 http_proxyhttps_proxy 环境变量 。这些标准 Linux 变量由在环境集群的容器中运行的网络客户端使用,以通过指定的代理路由流量。

NO_PROXY 变量默认设置为 Google 网域列表、环境集群 Compute Engine 元数据服务器的 IP 地址和 localhost,以便将它们排除在代理之外:

.google.com,.googleapis.com,metadata.google.internal,169.254.169.254,localhost

如果未将代理配置为处理流向 Google 服务的流量,则此配置可用于创建具有设置的 http_proxyhttps_proxy 环境变量的环境。

后续步骤