通过PrivateLink实现跨VPC的控制面与数据面集群的连通管理

当ASM实例所在的VPC与数据面ACK集群的VPC不相同、且在同一个地域时,可以通过PrivateLink实现跨VPC的控制面与数据面集群的连通管理。ASM提供了一种使用CRD的方式,简化网络连通的能力。

前提条件

  • 已创建一个ASM实例。具体操作,请参见创建ASM实例

  • 已创建一个与ASM实例同地域但不同VPC下的ACK集群。具体操作,请参见创建集群

  • 已开通PrivateLink服务。具体操作,请参见PrivateLink入门概述

操作步骤

  1. 将ACK集群添加到ASM实例。具体操作,请参见添加集群到ASM实例

    添加之后,ACK集群将处于连接中的状态,您需要进行以下配置以确保连通。

  2. 使用如下内容,创建asmpvlconfig.yaml。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMPvlConfig
    metadata:
      name: default
    spec:
      ackVpcEndpoint:
      - clusterId: cab9ace222210457a83f09fcd42e9****
        vSwitches:
        - vSwitchId: vsw-bp1jsgsanpvxpj32yai50
          zoneId: cn-hangzhou-j
      asmVpcEndpoint:
        vSwitches:
        - vSwitchId: vsw-bp1l5hini55sstnwd2skf
          zoneId: cn-hangzhou-i

    部分字段说明如下:

    字段

    说明

    metadata

    name

    该资源对象的名称name必须为default,其他名称无效。

    spec

    ackVpcEndpoint

    一个数组,包括如下配置内容:

    • clusterId:对应添加到ASM实例中的ACK集群的标识符。例如值为cab9ace222210457a83f09fcd42e9****表示一个特定的ACK集群ID。

    • vSwitches:是一个数组,包括了该ACK集群VPC下的可用虚拟交换机配置列表。

      • vSwitchId:特定虚拟交换机的标识符。例如vsw-bp1jsgsanpvxpj32yai50表示交换机的ID。

      • zoneId:对应vSwitchId虚拟交换机所在的可用区标识符。例如cn-hangzhou-j表示杭州地区的一个特定可用区。

        说明

        为了使用PrivateLink实现跨VPC的连通,必须提供与ASM实例交换机相同的可用区标识符。

    asmVpcEndpoint

    vSwitches对应虚拟交换机配置的数组列表,包括如下内容:

    • vSwitchId:ASM实例VPC中特定虚拟交换机的标识符。

    • zoneId:ASM实例对应vSwitchId虚拟交换机所在的可用区标识符。

      说明

      为了使用PrivateLink实现跨VPC的连通,必须提供与对应ACK集群交换机相同的可用区标识符。

  3. 在ASM实例对应的KubeConfig环境下,执行以下命令,部署ASMPvlConfig资源。

    kubectl apply -f asmpvlconfig.yaml
  4. 等待几分钟后,执行以下命令,查看ASMPvlConfig资源对象的执行状态。

    kubectl get asmpvlconfig default -o yaml

    预期输出:

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMPvlConfig
    metadata:
      name: default
    spec:
      ackVpcEndpoint:
      - clusterId: cab9ace222210457a83f09fcd42****
        vSwitches:
        - vSwitchId: vsw-bp1jsgsanpvxpj32yai50
          zoneId: cn-hangzhou-j
      asmVpcEndpoint:
        vSwitches:
        - vSwitchId: vsw-bp1l5hini55sstnwd2skf
          zoneId: cn-hangzhou-i
    status:
      clusters:
      - clusterId: cab9ace222210457a83f09fcd42****
        pvlEndpoint:
          connectionStatus: Connected
          domainName: ep-bp1i06bad79eb60c60cc.epsrv-bp1gqb8g1b8d7uactd.cn-hangzhou.privatelink.aliyuncs.com
          id: ep-bp1i06bad79eb60c60
          status: Active
        pvlEndpointService:
          id: epsrv-bp1gqb8g1b8d7uactd
          name: com.aliyuncs.privatelink.cn-hangzhou.epsrv-bp1gqb8g1b8d7uactd
          status: Active
      pilot:
        clusters:
        - clusterId: cab9ace222210457a83f09fcd42****
          pvlEndpoint:
            connectionStatus: Connected
            domainName: ep-bp1i52311b91a5a25e.epsrv-bp1cl4qwzkf747ug6tmy.cn-hangzhou.privatelink.aliyuncs.com
            id: ep-bp1i52311b91a5a25e
            status: Active
        pvlEndpointService:
          id: epsrv-bp1cl4qwzkf747ug6t
          name: com.aliyuncs.privatelink.cn-hangzhou.epsrv-bp1cl4qwzkf747ug6tmy
          status: Active
      status: Available      

    可以看到,新增了status字段下的内容,具体描述如下:

    字段

    说明

    clusters

    clusters包含了ACK集群状态信息的列表。

    • clusterId:ACK集群的唯一标识符。

    • pvlEndpoint:提供关于特定私有链接端点的详细信息。

      • connectionStatus:用于该ASM实例连接的私有连接状态。

      • domainName:用于该ASM实例连接的私有链接端点的域名。

      • id:用于该ASM实例连接的私有链接端点的唯一标识符。

      • status:用于该ASM实例连接的私有链接端点的活动状态。

    • pvlEndpointService:提供关于私有链接端点服务资源的信息。

      • id:对应ACK集群ApiServer SLB的私有链接端点服务的唯一标识符。

      • name:对应ACK集群ApiServer SLB的私有链接端点服务的名称。

      • status:对应ACK集群ApiServer SLB的私有链接端点服务的活动状态。

    pilot

    pilot包含了ASM控制面托管服务的状态信息的列表。

    • clusters: ACK集群状态的列表。

      • clusterId: ACK集群的唯一标识符。

      • pvlEndpoint: 提供关于特定私有链接端点的详细信息。

        • connectionStatus: 用于该ACK集群连接的私有连接状态。

        • domainName: 用于该ACK集群连接的私有链接端点的域名。

        • id: 用于该ACK集群连接的私有链接端点的唯一标识符。

        • status: 用于该ACK集群连接的私有链接端点的活动状态。

    • pvlEndpointService: 提供关于端点服务资源的信息。

      • id: 对应ASM实例Pilot SLB的私有链接端点服务的唯一标识符。

      • name: 对应ASM实例Pilot SLB的私有链接端点服务的名称。

      • status: 对应ASM实例Pilot SLB的私有链接端点服务的活动状态。

    status

    表明整体可用状态。Available表示连通配置成功完成,其他状态为失败。

  5. 登录PrivateLink控制台,查看终端节点服务和终端节点对应的状态。

    1. 登录PrivateLink控制台,在左侧导航栏,单击终端节点服务

    2. 在顶部菜单栏,选择终端节点服务所在的地域。

    3. 终端节点服务页面,单击目标终端节点服务的实例ID,查看终端节点服务的详细信息。

    4. 在左侧导航栏,单击终端节点,然后单击目标终端节点的实例ID,查看终端节点的详细信息。

  6. 步骤4对应的clusters下ACK集群clusterIdpvlEndpoint.domainName(例如值ep-bp1i06bad79eb60c60cc.epsrv-bp1gqb8g1b8d7uactdab.cn-hangzhou.privatelink.aliyuncs.com),添加到该ACK集群的自定义集群API Server证书的SAN字段中。具体操作,请参见自定义集群API Server证书SAN

  7. 查看ACK集群的状态。

    若集群处于运行中的状态,表明已经通过PrivateLink实现跨VPC的连通。