当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部分字段说明如下:
字段
说明
metadataname该资源对象的名称
name必须为default,其他名称无效。specackVpcEndpoint一个数组,包括如下配置内容:
-
clusterId:对应添加到ASM实例中的ACK集群的标识符。例如值为cab9ace222210457a83f09fcd42e9****表示一个特定的ACK集群ID。 -
vSwitches:是一个数组,包括了该ACK集群VPC下的可用虚拟交换机配置列表。-
vSwitchId:特定虚拟交换机的标识符。例如vsw-bp1jsgsanpvxpj32yai50表示交换机的ID。 -
zoneId:对应vSwitchId虚拟交换机所在的可用区标识符。例如cn-hangzhou-j表示杭州地区的一个特定可用区。说明为了使用PrivateLink实现跨VPC的连通,必须提供与ASM实例交换机相同的可用区标识符。
-
asmVpcEndpointvSwitches对应虚拟交换机配置的数组列表,包括如下内容:-
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字段下的内容,具体描述如下:字段
说明
clustersclusters包含了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的私有链接端点服务的活动状态。
-
pilotpilot包含了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的连通。