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