创建 VPN 隧道

本页面介绍如何添加从一个 VPN 网关到另一个 VPN 网关的 VPN 隧道。

VPN 隧道是组织网络与远程网络之间的加密 IPsec 隧道。它将 VPNGateway 接口连接到 PeerGateway 接口,并使用 VPNBGPPeer 资源通过隧道交换路由信息。

准备工作

如需创建 VPN 隧道,您必须具备以下条件:

  • 现有的 VPN 网关和 VPN 对等网关资源。如需了解详情,请参阅创建 VPN 网关和对等网关
  • 现有的 VPN BGP 对等方对象。如需了解详情,请参阅创建 VPN BGP 会话
  • 现有密钥。如需了解详情,请参阅使用 PSK 创建 Secret
  • 必要的身份和访问权限角色:

    • VPN 管理员:拥有对所有 VPN 相关资源的读写权限。请让您的组织 IAM 管理员向您授予 VPN 管理员 (vpn-admin) 角色。
    • VPN Viewer:拥有对所有 VPN 相关资源的读取权限。请让您的组织 IAM 管理员向您授予 VPN Viewer (vpn-viewer) 角色。
    • 如需了解详情,请参阅角色定义

创建 VPN 隧道

引用上一步中创建的 VPNGatewayPeerGatewayVPNBGPPeerSecret 资源来创建隧道。

如需创建 VPN 隧道,请按以下步骤操作:

  1. 创建 VPNTunnel 对象:

    kubectl --kubeconfig MANAGEMENT_API_SERVER create -n platform -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: VPNTunnel
    metadata:
      name: VPN_TUNNEL_NAME
    spec:
      vpnInterface:
        name: VPN_GW_NAME
        namespace: platform
        interface: VPN_INTERFACE_NAME
      peerInterface:
        name: PEER_GW_NAME
        namespace: platform
        interface: PEER_INTERFACE_NAME
      vpnBGPPeer:
        name: VPN_BGP_PEER_NAME
        namespace: platform
      ikeKey:
        name: PSK_NAME
        namespace: platform
    EOF
    

    替换以下内容:

    • MANAGEMENT_API_SERVER:区域 API 服务器的 kubeconfig 路径。如果您尚未为目标地区中的 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
    • VPN_TUNNEL_NAME:所用 VPN 隧道的名称。
    • VPN_GW_NAME:VPN 网关的名称。
    • VPN_INTERFACE_NAME:VPN 接口的名称。
    • PEER_GW_NAME:对等 VPN 网关的名称。
    • PEER_INTERFACE_NAME:对等 VPN 网关接口的名称。
    • VPN_BGP_PEER_NAME:VPN BGP 对等端的名称。如需了解详情,请参阅创建 VPN BGP 会话
    • PSK_NAME:您在创建包含 PSK 的 Secret 中创建的 PSK 的名称。
  2. 通过检查 Status 字段,验证 VPN_TUNNEL_NAME 对象是否已正确协调。获取 VPN 隧道的详细信息:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpntunnel VPN_TUNNEL_NAME
    

    检查输出,它必须类似于以下示例:

    Status:
      Conditions:
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Reconciled
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Ready
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Tunnel is established.
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  TunnelEstablished
      State:                   Established
    
  3. VPNGatewayPeerGatewayVPNBGPPeer 对象在被 VPNTunnel 引用后必须具有更新后的状态。例如,如果您验证 VPNBGPPeer 是否已正确对账,则会看到更新后的状态值。获取 VPNBGPPeer 对象的详细信息:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpnbgppeer VPN_BGP_PEER_NAME
    

    检查输出,状态值现已更新:

    Status:
      Advertised:
        Prefix:  10.0.0.16/28
        Prefix:  10.0.1.32/27
        Prefix:  172.16.0.0/14
        Prefix:  172.20.0.0/17
        Prefix:  172.20.128.0/17
        Prefix:  2002:4860:100e:fa00::/58
      Conditions:
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ValidIPs
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  TunnelsAttached
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Reconciled
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  AdvertisedRoutesReady
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ReceivedRoutesValid
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ReceivedRoutesReady
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Ready
      Received:
        Prefix:  192.168.100.0/24
        Prefix:  193.188.200.0/24
      State:     Established
    

后续步骤