本页面介绍如何在 Distributed Cloud connected 区域中创建和管理 Google Distributed Cloud connected VPN 连接资源。
此功能仅在 Distributed Cloud connected 机架上提供。 Distributed Cloud connected 服务器不支持 VPN 连接资源。
如需详细了解 Distributed Cloud VPN 连接,请参阅 Distributed Cloud connected 的工作原理。
请注意以下几点:
您必须配置网络,以 允许 Distributed Cloud VPN 连接所需的流量 。
创建 Distributed Cloud VPN 连接时,Distributed Cloud connected 会创建所需的 Cloud VPN 网关和 Cloud Router 资源。Cloud VPN 网关的名称以
anthos-mcc为前缀。Cloud Router 的名称以gdce为前缀。您不得修改这些资源;否则,Distributed Cloud VPN 连接可能会停止运行。 如果您不小心修改了这些资源,则必须删除并重新创建受影响的 Distributed Cloud VPN 连接。当您在该 Google Cloud 项目和区域中创建第一个 Distributed Cloud VPN 连接时,Distributed Cloud connected 会为每个 per Google Cloud 项目和每个区域创建一个 Cloud Router。随后在该项目和区域中创建的所有 VPN 连接都会重复使用同一个 Cloud Router 资源。 Google Cloud
只有在没有附加任何辅助网络接口的情况下,才能删除 Cloud Router 资源。当您删除附加到 Cloud Router 的最后一个 剩余 VPN 连接时,Distributed Cloud connected 会自动删除该 Cloud Router。
Distributed Cloud VPN 连接仅支持 IPv4 地址。
您只能为每个 Distributed Cloud connected 集群创建一个 VPN 连接。
如果您的本地网络使用多个网络地址转换 (NAT) 网关,则必须对其进行配置,以便您的 Distributed Cloud connected 安装使用单个 IP 地址将出站流量发送到您的 Virtual Private Cloud (VPC) 网络。
默认情况下,Distributed Cloud connected 会在单个节点上配置单个 VPN 客户端,以使用两个 VPN 隧道连接到 Google Cloud ,也称为 端上的 Google Cloud 高可用性 VPN 。您可以使用
--high-availability标志进一步提高 VPN 连接的可用性。此标志指示 Distributed Cloud connected 在两个单独的节点上配置两个 VPN 客户端,总共配置四个 VPN 隧道。如果您想更改 VPN 连接的配置,则必须删除并重新创建该连接。
您可以使用 Google Cloud CLI 或 Distributed Cloud Edge Container API 管理 VPN 连接。
创建 VPN 连接
如需创建 Distributed Cloud VPN 连接,请完成本部分中的步骤。
如需完成此任务,您必须在项目中拥有
Edge Container Admin 角色
(roles/edgecontainer.admin)。 Google Cloud
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 connected 区域的 Google Cloud 区域。CLUSTER_NAME:目标 Distributed Cloud connected 集群的名称。VPC_NETWORK_NAME:此 VPN 连接指向的目标 VPC 网络的名称。此 网络必须与您的 Distributed Cloud connected 安装位于同一 Google Cloud 项目中。NAT_GATEWAY_IP:目标集群的 NAT 网关 IP 地址。如果您未使用 NAT,请省略此标志。ROUTER_NAME(可选):指定要用于此 VPN 连接的现有 Cloud Router 资源。否则, 如果目标 Google Cloud 项目和区域中尚不存在 Cloud Router, Distributed Cloud connected 会自动创建一个。--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:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudVPN_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 connected 会自动创建一个。
列出 VPN 连接
如需列出为 Distributed Cloud connected 集群预配的 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:在其中创建目标 Distributed 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:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudFILTER:一个表达式,用于将返回的结果限制为特定值。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:在其中创建目标 Distributed Cloud connected 区域的区域。 Google Cloud
API
向 projects.locations.vpnConnections.get 方法发出 GET 请求:
GET /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME
替换以下内容:
PROJECT_ID:目标 Google Cloud 项目的 ID。REGION:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudVPN_CONNECTION_NAME:目标 VPN 连接的名称。
删除 VPN 连接
如需删除 Distributed Cloud VPN 连接,请完成本部分中的步骤。
如果您要删除与
Distributed Cloud
之前在 Google Cloud 项目中创建的 Cloud Router 资源关联的最后一个 VPN 连接,则删除该 VPN 连接会自动删除关联的
Cloud Router 资源。但是,在这种情况下,只有由 Distributed Cloud
connected 自动创建的 Cloud Router 资源会被自动删除。Distributed Cloud connected
不会删除使用 --router 标志指定的现有 Cloud Router 资源。
如需完成此任务,您必须在项目中拥有
Edge Container Admin 角色
(roles/edgecontainer.admin)。 Google Cloud
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 connected 区域的 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:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudVPN_CONNECTION_NAME:目标 VPN 连接的名称。REQUEST_ID:用于标识此请求的唯一程序化 ID。
管理跨项目 VPN 连接
Distributed Cloud connected 还允许您创建与项目中的 VPC 网络的 VPN 连接 ,该项目与包含您的 Distributed Cloud connected 集群的项目 Google Cloud 不同 Google Cloud 。
前提条件
您必须满足本部分中的前提条件,然后才能创建跨项目 VPN 连接。
调用方账号权限
目标 VPC 项目中的调用方用户账号必须具有以下权限。这些权限封装在
Project IAM Admin 角色
(roles/resourcemanager.projectIamAdmin) 中:
resourcemanager.projects.getresourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy
如需了解如何设置 IAM 角色和权限,请参阅 管理对项目、文件夹和组织的访问权限。
Distributed Cloud 服务帐号权限
如需允许 Distributed Cloud connected 在目标 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 connected 集群 Google Cloud 项目的 ID。REGION:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudCLUSTER_NAME:目标 Distributed Cloud connected 集群的名称。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:在其中创建目标 Distributed Cloud connected 区域的区域。 Google CloudVPN_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 日志:
- Distributed Cloud connected 集群的审核日志会记录跨项目 VPN 连接的长时间运行的操作、身份验证和授权信息。此信息包括创建操作的调用方以及已授予或拒绝调用方的权限。
- 目标 VPC 项目的审核日志会记录有关
启用跨项目 VPN
连接的资源的信息,例如 Cloud Router 和 Cloud VPN
资源。 Google Cloud 访问这些资源的调用方是
Distributed Cloud connected 服务帐号,您已向其
授予
Edge Container Service Agent 角色
(
roles/edgecontainer.serviceAgent)。
VPN 连接的限制
如果您修改了在其中创建特定 VPN 连接的集群的节点池,则必须删除并重新创建该 VPN 连接。否则,可能会出现意外行为,包括:
- VPN 连接间歇性丢失
- 无法在 Distributed Cloud connected 区域中的其他集群中创建 VPN 连接
跨项目 VPN 连接的限制
此外,跨项目 VPN 连接还存在以下限制:
- 跨项目 VPN 连接资源仅存在于您的 Distributed Cloud connected 集群中。
- 如果您更改了目标 VPC 项目中 Distributed Cloud connected 服务帐号的权限,则无法从 Distributed Cloud connected 集群中删除跨项目 VPN 连接。