创建和管理 VPN 连接

本页面介绍了如何在 Distributed Cloud 区域中创建和管理 Google Distributed Cloud VPN 连接资源。

如需详细了解 Distributed Cloud VPN 连接,请参阅 Distributed Cloud 的运作方式

请注意以下几点:

  • 您必须配置网络,以允许 Distributed Cloud VPN 连接所需的流量

  • 创建分布式 Cloud VPN 连接时,分布式 Cloud 会创建所需的 Cloud VPN 网关和 Cloud Router 资源。Cloud VPN 网关的名称以 anthos-mcc 为前缀。Cloud Router 路由器的名称以 gdce 为前缀。您不得修改这些资源,否则分布式 Cloud VPN 连接可能会停止运行。 如果您不小心修改了这些资源,则必须删除并重新创建受影响的分布式 Cloud VPN 连接。

  • 当您在Google Cloud 项目和区域中创建第一个分布式 Cloud VPN 连接时,Distributed Cloud 会为每个 Google Cloud 项目和区域创建一个 Cloud Router。随后在该 Google Cloud 项目和区域中创建的所有 VPN 连接都会重复使用该 Cloud Router 资源。

  • 仅当 Cloud Router 资源未连接任何辅助网络接口时,才能将其删除。当您删除附加到 Cloud Router 的最后一个剩余 VPN 连接时,Distributed Cloud 会自动删除该 Cloud Router。

  • 分布式 Cloud VPN 连接仅支持 IPv4 地址。

  • 每个 Distributed Cloud 集群只能创建一条 VPN 连接。

  • 如果您的本地网络使用多个网络地址转换 (NAT) 网关,您必须对其进行配置,以便您的 Distributed Cloud 安装使用单个 IP 地址来处理流向虚拟私有云 (VPC) 网络的出站流量。

  • 默认情况下,Distributed Cloud 会在单个节点上配置单个 VPN 客户端,以使用两个 VPN 隧道连接到 Google Cloud ,这两个 VPN 隧道也称为 Google Cloud 端上的高可用性 VPN。您可以使用 --high-availability 标志进一步提高 VPN 连接的可用性。此标志指示 Distributed Cloud 在两个单独的节点上配置两个 VPN 客户端,总共配置四个 VPN 隧道。

  • 如果您想更改 VPN 连接的配置,必须删除并重新创建 VPN 连接。

  • 您可以使用 Google Cloud CLI 或 Distributed Cloud Edge Container API 管理 VPN 连接。

创建 VPN 连接

如需创建分布式 Cloud VPN 连接,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container vpn-connections create 命令:

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --router=ROUTER_NAME \
    --high-availability

替换以下内容:

  • VPN_CONNECTION_NAME:可唯一标识相应 VPN 连接的描述性名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud 可用区的 Google Cloud 区域。
  • CLUSTER_NAME:目标 Distributed Cloud 集群的名称。
  • VPC_NETWORK_NAME:此 VPN 连接指向的目标 VPC 网络的名称。此网络必须与您的 Distributed Cloud 安装位于同一 Google Cloud 项目中。
  • NAT_GATEWAY_IP:目标集群的 NAT 网关 IP 地址。如果您不使用 NAT,请省略此标志。
  • ROUTER_NAME(可选):指定要用于此 VPN 连接的现有 Cloud Router 资源。否则,如果目标Google Cloud 项目和区域中尚不存在 Cloud Router,Distributed Cloud 会自动创建一个。
  • --high-availability(可选):通过设置在两个单独节点上运行的两个单独 VPN 客户端,在集群端配置此 VPN 连接以实现高可用性。如需停用高可用性,请省略此标志。

API

projects.locations.vpnConnections.create 方法发出 POST 请求:

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID
  "enableHighAvailability": HA_ENABLE,
  "router": ROUTER_NAME,
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • VPN_CONNECTION_ID:用于标识相应节点池资源的唯一程序化 ID。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • VPN_CONNECTION_NAME:可唯一标识相应 VPN 连接的描述性名称。
  • NAT_GATEWAY:NAT 网关的 IP 地址。
  • CLUSTER_PATH:目标集群的完整规范路径。
  • VPC_NETWORK_ID:目标 VPC 网络的 ID。
  • HA_ENABLE:表示是否在集群端将此 VPN 连接配置为高可用性。如果设置为 TRUE,则配置两个在两个单独节点上运行的单独 VPN 客户端。
  • ROUTER_NAME(可选):指定要用于此 VPN 连接的现有 Cloud Router 资源。否则,如果目标Google Cloud 项目和区域中尚不存在 Cloud Router,Distributed Cloud 会自动创建一个。

列出 VPN 连接

如需列出为分布式 Cloud 集群预配的 VPN 连接,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

gcloud

使用 gcloud edge-cloud container vpn-connections list 命令:

gcloud edge-cloud container vpn-connections list \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。

API

projects.locations.vpnConnections.list 方法发出 GET 请求:

GET /v1/PROJECT_ID/locations/REGION/vpnConnections?filter=FILTER&pageSize=PAGE_SIZE&orderBy=SORT_BY&pageToken=PAGE_TOKEN

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • FILTER:将返回的结果限制为特定值的表达式。
  • PAGE_SIZE:每页要返回的结果数。
  • SORT_BY:用于对返回的结果进行排序的字段名称的英文逗号分隔列表。默认排序顺序为升序;如需降序排序,请在所需字段前加上 ~
  • PAGE_TOKEN:在响应的 nextPageToken 字段中,对上一个列表请求的响应中收到的令牌。发送此令牌可接收一页结果。

获取有关 VPN 连接的信息

如需获取有关 Distributed Cloud VPN 连接的信息,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

gcloud

使用 gcloud edge-cloud container vpn-connections describe 命令:

gcloud edge-cloud container vpn-connections describe VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • VPN_CONNECTION_NAME:目标 VPN 连接的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。

API

projects.locations.vpnConnections.get 方法发出 GET 请求:

GET /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • VPN_CONNECTION_NAME:目标 VPN 连接的名称。

删除 VPN 连接

如需删除分布式 Cloud VPN 连接,请完成本部分中的步骤。

如果您要删除与 Distributed Cloud 之前在 Google Cloud 项目中所创建的 Cloud Router 资源关联的最后一个剩余 VPN 连接,则删除该 VPN 连接会自动删除关联的 Cloud Router 资源。不过,在这种情况下,只有由 Distributed Cloud 自动创建的 Cloud Router 资源会被自动删除。Distributed Cloud 不会删除使用 --router 标志指定的现有 Cloud Router 资源。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container vpn-connections delete 命令:

gcloud edge-cloud container vpn-connections delete VPN_CONNECTION_NAME \
    --location=REGION \
    --project=PROJECT_ID

替换以下内容:

  • VPN_CONNECTION_NAME:可唯一标识相应 VPN 连接的描述性名称。
  • REGION:创建目标 Distributed Cloud 可用区的 Google Cloud 区域。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。

API

projects.locations.vpnConnections.delete 方法发出 DELETE 请求:

DELETE /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME?requestId=REQUEST_ID

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • VPN_CONNECTION_NAME:目标 VPN 连接的名称。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。

管理跨项目 VPN 连接

借助分布式云,您还可以创建 VPN 连接,以连接到 Google Cloud 项目(与包含分布式云集群的 Google Cloud 项目不同)中的 VPC 网络。

前提条件

您必须满足本部分中的前提条件,然后才能创建跨项目 VPN 连接。

调用方账号权限

目标 VPC 项目中的调用者用户账号必须具有以下权限。这些权限封装在 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin) 中:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

如需了解如何设置 IAM 角色和权限,请参阅管理对项目、文件夹和组织的访问权限

Distributed Cloud 服务账号权限

为了允许 Distributed Cloud 在目标 VPC 项目中创建 Cloud Router 和 Cloud VPN 资源,从而实现跨项目 VPN 连接,您必须向 Distributed Cloud 集群中的 Distributed Cloud 服务账号授予 Compute Network Admin 角色 (roles/compute.networkAdmin)。

如需授予 Compute Network Admin 角色,请执行以下操作。

gcloud

使用 gcloud projects add-iam-policy-binding 命令:

gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
    --member="serviceAccount:service-PROJECT_NUM@gcp-sa-edgecontainer.iam.gserviceaccount.com" \
    --role="roles/compute.networkAdmin" \
    --project=VPC_PROJECT_ID

替换以下内容:

  • VPC_PROJECT_ID:目标 VPC 项目的 ID。
  • PROJECT_NUM:目标 Distributed Cloud Google Cloud 项目的编号。

创建跨项目 VPN 连接

如需创建与不同Google Cloud 项目中的 VPC 网络的 VPN 连接,请完成本部分中的步骤。

gcloud

使用 gcloud edge-cloud container vpn-connections create 命令:

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-project=VPC_PROJECT_ID \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --high-availability

替换以下内容:

  • VPN_CONNECTION_NAME:可唯一标识相应 VPN 连接的描述性名称。
  • PROJECT_ID:目标 Distributed Cloud 集群 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • CLUSTER_NAME:目标 Distributed Cloud 集群的名称。
  • VPC_PROJECT_ID:目标 VPC 网络所属的目标Google Cloud 项目的 ID。
  • VPC_NETWORK_NAME:此 VPN 连接指向的目标 VPC 网络的名称。
  • NAT_GATEWAY_IP:目标集群的 NAT 网关 IP 地址。如果您不使用 NAT,请省略此标志。
  • --high-availability(可选):通过设置在两个单独的节点上运行的两个单独的 VPN 客户端,在集群端为相应 VPN 连接配置高可用性。如需停用高可用性,请省略此标志。

API

projects.locations.vpnConnections.create 方法发出 POST 请求:

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID,
  "vpcProject": VPC_PROJECT_ID,
  "vpcServiceAccount": var>VPC_PROJECT_SERVICE_ACCOUNT,
  "enableHighAvailability": HA_ENABLE,
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • VPN_CONNECTION_ID:用于标识相应节点池资源的唯一程序化 ID。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • VPN_CONNECTION_NAME:可唯一标识相应 VPN 连接的描述性名称。
  • NAT_GATEWAY:NAT 网关的 IP 地址。
  • CLUSTER_PATH:目标集群的完整规范路径。
  • VPC_NETWORK_ID:目标 VPC 网络的 ID。
  • VPC_PROJECT_ID:包含目标 VPC 网络的目标Google Cloud 项目的 ID。
  • HA_ENABLE:表示是否在集群端将此 VPN 连接配置为高可用性。如果设置为 TRUE,则配置两个在两个单独节点上运行的单独 VPN 客户端。

跨项目 VPN 连接的 Cloud Audit Logs

创建跨项目 VPN 连接时,Cloud Audit Logs 日志的写入方式如下:

  • 分布式云集群的审核日志会记录跨项目 VPN 连接的长时间运行的操作、身份验证和授权信息。此信息包括创建操作的调用方以及已授予或拒绝调用方的权限。
  • 目标 VPC 项目的审核日志会记录有关 Google Cloud 实现跨项目 VPN 连接的资源(例如 Cloud Router 和 Cloud VPN 资源)的信息。访问这些资源的调用方是您已向其授予 Edge Container Service Agent 角色 (roles/edgecontainer.serviceAgent) 的 Distributed Cloud 服务账号。

VPN 连接的限制

如果您修改了创建特定 VPN 连接的集群的节点池,则必须删除并重新创建该 VPN 连接。否则,可能会出现意外行为,包括:

  • VPN 连接间歇性中断
  • 无法在分布式云区域的其他集群中创建 VPN 连接

跨项目 VPN 连接的限制

此外,跨项目 VPN 连接还存在以下限制:

  • 跨项目 VPN 连接资源仅存在于您的分布式 Cloud 集群中。
  • 如果您更改目标 VPC 项目中分布式云服务账号的权限,则无法从分布式云集群中删除跨项目 VPN 连接。

后续步骤