本文介紹如何在ACK One Fleet實例中開啟和關閉多集群網關,以及如何將關聯集群添加至多集群網關。
計費說明
使用多集群網關會產生一定的費用,關于多集群網關的計費信息,請參見普通實例計費概述。
前提條件
已完成RAM用戶AliyunAdcpManagedMseRole授權。關于角色AliyunAdcpManagedMseRole的策略AliyunAdcpManagedMseRolePolicy詳情如下。
{ "Statement": [ { "Action": [ "mse:AddBlackWhiteList", "mse:AddGateway", "mse:AddServiceSource", "mse:CreateApplication", "mse:DeleteGateway", "mse:DeleteServiceSource", "mse:GetBlackWhiteList", "mse:GetGateway", "mse:GetGatewayDetail", "mse:GetGatewayOption", "mse:ListServiceSource", "mse:ListTagResources", "mse:ModifyLosslessRule", "mse:TagResources", "mse:UntagResources", "mse:UpdateBlackWhiteList", "mse:UpdateGatewayOption", "mse:UpdateServiceSource" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "log:CloseProductDataCollection", "log:OpenProductDataCollection", "log:GetProductDataCollection" ], "Resource": [ "acs:mse:*:*:instance/*", "acs:log:*:*:project/*/logstore/mse_*" ], "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": [ "audit.log.aliyuncs.com" ] } }, "Effect": "Allow" } ], "Version": "1" }
已開啟艦隊管理功能,并從ACK One控制臺獲取Fleet實例的KubeConfig,通過kubectl連接至Fleet實例。
已添加關聯集群,且關聯集群與ACK One Fleet實例處于同一VPC。
開啟多集群網關
通過控制臺開啟
登錄ACK One控制臺,在左側導航欄選擇 。
在多集群網關頁面單擊開啟多集群網關,然后在彈出的對話框中單擊確定。
通過命令行開啟
確認阿里云CLI為最新版本后,執行以下命令開啟多集群網關。
替換以下
<YOUR_FLEET_CLUSTERID>
為您的Fleet實例ID。aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled true
執行以下命令,查看多集群網關功能的開啟狀態。
aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID> |grep -B4 -A1 EnabledMSE`
預期輸出如下:
Status
為True
表示多集群網關成功開啟。{ "Message": "", "Reason": "", "Status": "True", "Type": "EnabledMSE" },
創建多集群網關
通過控制臺創建
登錄ACK One控制臺,在左側導航欄選擇 。
在多集群網關頁面右上角單擊創建網關。
在彈出的面板中,根據實際情況修改創建多集群網關的YAML文件,然后單擊創建。
通過命令行創建
獲取ACK One Fleet實例的虛擬交換機ID并記錄。
執行以下命令,獲取交換機實例ID。
aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID>
從預期輸出的
VSwitches
中復制一個交換機實例ID。
使用以下內容,創建mseingressconfig.yaml文件。
替換以下
${vsw-id1}
為您上一步獲取的交換機ID。您也可以在創建網關時,通過添加Annotation同步指定待添加到多集群網關的關聯集群。apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: ackone-gateway # 添加關聯集群到MSE網關。 #annotations: # mse.alibabacloud.com/remote-clusters: ${cluster1},${cluster2} spec: common: instance: replicas: 3 spec: 2c4g network: # 公網SLB和內網SLB,可都配置,如果2個字段都不配置則默認使用公網SLB。 #publicSLBSpec: slb.s2.small #privateSLBSpec: slb.s2.small vSwitches: - ${vsw-id1} ingress: local: ingressClass: mse name: mse-ingress
執行以下命令,在ACK One Fleet實例中創建一個名為mse-ingress的網關。
kubectl apply -f mseingressconfig.yaml
執行以下命令,驗證網關是否創建成功。
kubectl get mseingressconfig ackone-gateway
預期輸出:
NAME STATUS AGE ackone-gateway Listening 3m15s
預期輸出中網關狀態為Listening,表明云原生網關創建成功處于運行狀態,并自動監聽集群中IngressClass為
mse
的Ingress資源。通過MseIngressConfig創建的多集群網關會按照Pending、Running、Listening的狀態依次變化。各狀態說明如下:
Pending:表明云原生網關正在創建中,需等待3分鐘左右。
Running:表明云原生網關創建成功,并處于運行狀態。
Listening:表明云原生網關處于運行狀態,并監聽集群中Ingress資源。
Failed:表明云原生網關處于非法狀態,可以查看Status字段中的Message來進一步明確原因。
在多集群網關中添加或刪除關聯集群
通過控制臺添加或刪除
登錄ACK One控制臺,在左側導航欄選擇 。
在多集群網關頁面上方的下拉框中選擇要修改的目標多集群網關,然后在頁面右上角單擊編輯。
在彈出的面板中修改MseIngresConfig.yaml文件,修改
annotations
參數中的集群ID,然后單擊更新。示例如下:
annotations: mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
${cluster1-id}
,${cluster2-id}
為添加的關聯集群的ID,多個關聯集群以英文半角逗號(,)間隔,您可以通過修改集群ID來添加或刪除關聯的集群。若創建多集群網關時未添加關聯集群,則MseIngresConfig.yaml文件中沒有
annotations
參數,添加關聯集群時,您需要將以上示例添加到MseIngresConfig.yaml文件的metadata
對象中,再修改集群ID。
通過命令行方式添加或刪除
在ACK One Fleet實例中,通過mseingressconfig對象的Annotation控制多集群網關中添加或刪除關聯集群。替換以下
${cluster1-id}
、${cluster2-id}
為您待添加的關聯集群的ID,添加多個關聯集群時,中間以英文半角逗號(,)間隔。annotations: mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
執行以下命令,查看關聯集群是否已成功添加至多集群網關。
kubectl get mseingressconfig ackone-gateway -ojsonpath="{.status.remoteClusters}"
預期輸出:
[{"clusterId":"c7fb82****"},{"clusterId":"cd3007****"}]
預期輸出中已包含指定的ClusterID,并且無Failed信息,表明關聯集群已成功添加至多集群網關。
執行以下命令,查看當前已添加到多集群網關的關聯集群。
kubectl get mseingressconfig ackone-gateway
執行以下命令,在已有的基礎上新增或刪除關聯集群。
mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2}
表示待添加到多集群網關的集群列表。kubectl annotate mseingressconfig ackone-gateway mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2} --overwrite=true
停用多集群網關功能
刪除多集群網關將會對業務產生影響,請謹慎操作。
當您確定不再使用多集群網關時,需要先刪除多集群網關,再關閉多集群網關功能,避免產生額外資源損失
通過控制臺停用
登錄ACK One控制臺,在左側導航欄選擇 。
在多集群網關頁面上方的下拉框中選擇要刪除的目標多集群網關,然后在頁面右上角單擊刪除。
在彈出的對話框中輸入待刪除的多集群網關的名稱,然后單擊刪除。
確認ACK One Fleet實例下的所有多集群網關都已刪除,然后在頁面右上角單擊關閉功能。
在彈出的提示框中單擊確定。
通過命令行停用
執行以下命令,刪除多集群網關。
kubectl delete mseingressconfig ackone-gateway
執行以下命令,關閉多集群網關功能。
aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled false