当ASM实例所在的VPC与数据面ACK集群的VPC不相同、且在同一个地域时,可以通过PrivateLink实现跨VPC的控制面与数据面集群的连通管理。ASM提供了一种使用CRD的方式,简化网络连通的能力。
前提条件
- 已创建一个ASM实例。具体操作,请参见创建ASM实例。 
- 已创建一个与ASM实例同地域但不同VPC下的ACK集群。具体操作,请参见创建集群。 
- 已开通PrivateLink服务。具体操作,请参见PrivateLink入门概述。 
操作步骤
- 将ACK集群添加到ASM实例。具体操作,请参见添加集群到ASM实例。 - 添加之后,ACK集群将处于连接中的状态,您需要进行以下配置以确保连通。 
- 使用如下内容,创建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集群交换机相同的可用区标识符。 
 
- 在ASM实例对应的KubeConfig环境下,执行以下命令,部署ASMPvlConfig资源。 - kubectl apply -f asmpvlconfig.yaml
- 等待几分钟后,执行以下命令,查看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表示连通配置成功完成,其他状态为失败。
- 登录PrivateLink控制台,查看终端节点服务和终端节点对应的状态。 - 登录PrivateLink控制台,在左侧导航栏,单击终端节点服务。 
- 在顶部菜单栏,选择终端节点服务所在的地域。 
- 在终端节点服务页面,单击目标终端节点服务的实例ID,查看终端节点服务的详细信息。 
- 在左侧导航栏,单击终端节点,然后单击目标终端节点的实例ID,查看终端节点的详细信息。 
 
- 将步骤4对应的 - clusters下ACK集群- clusterId的- pvlEndpoint.domainName(例如值- ep-bp1i06bad79eb60c60cc.epsrv-bp1gqb8g1b8d7uactdab.cn-hangzhou.privatelink.aliyuncs.com),添加到该ACK集群的自定义集群API Server证书的- SAN字段中。具体操作,请参见自定义集群API Server证书SAN。
- 查看ACK集群的状态。 - 若集群处于运行中的状态,表明已经通过PrivateLink实现跨VPC的连通。