当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的连通。