當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的連通。