全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:管理网关

更新时间:Nov 08, 2024

本文介绍如何在ACK One Fleet实例中开启和关闭多集群网关,以及如何将关联集群添加至多集群网关。

计费说明

使用多集群网关会产生一定的费用,关于多集群网关的计费信息,请参见普通实例计费概述

前提条件

  • 已完成MSE云原生网关授权

  • 已完成RAM用户AliyunAdcpManagedMseRole授权。关于角色AliyunAdcpManagedMseRole的策略AliyunAdcpManagedMseRolePolicy详情如下。

    展开查看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。

  • 已安装最新版本阿里云CLI配置阿里云CLI

开启多集群网关

通过控制台开启

  1. 登录ACK One控制台,在左侧导航栏选择舰队 > 多集群网关

  2. 多集群网关页面单击开启多集群网关,然后在弹出的对话框中单击确定

通过命令行开启

  1. 确认阿里云CLI为最新版本后,执行以下命令开启多集群网关。

    替换以下<YOUR_FLEET_CLUSTERID>为您的Fleet实例ID。

    aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled true
  2. 执行以下命令,查看多集群网关功能的开启状态。

    aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID> |grep -B4 -A1 EnabledMSE`

    预期输出如下:StatusTrue表示多集群网关成功开启。

    			{
    				"Message": "",
    				"Reason": "",
    				"Status": "True",
    				"Type": "EnabledMSE"
    			},

创建多集群网关

通过控制台创建

  1. 登录ACK One控制台,在左侧导航栏选择舰队 > 多集群网关

  2. 多集群网关页面右上角单击创建网关

  3. 在弹出的面板中,根据实际情况修改创建多集群网关的YAML文件,然后单击创建。

通过命令行创建

  1. 获取ACK One Fleet实例的虚拟交换机ID并记录。

    1. 执行以下命令,获取交换机实例ID。

    aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID>
    1. 从预期输出的VSwitches中复制一个交换机实例ID。

  2. 使用以下内容,创建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
  3. 执行以下命令,在ACK One Fleet实例中创建一个名为mse-ingress的网关。

    kubectl apply -f mseingressconfig.yaml
  4. 执行以下命令,验证网关是否创建成功。

    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来进一步明确原因。

在多集群网关中添加或删除关联集群

通过控制台添加或删除

  1. 登录ACK One控制台,在左侧导航栏选择舰队 > 多集群网关

  2. 多集群网关页面上方的下拉框中选择要修改的目标多集群网关,然后在页面右上角单击编辑

  3. 在弹出的面板中修改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。

通过命令行方式添加或删除

  1. 在ACK One Fleet实例中,通过mseingressconfig对象的Annotation控制多集群网关中添加或删除关联集群。替换以下${cluster1-id}${cluster2-id}为您待添加的关联集群的ID,添加多个关联集群时,中间以英文半角逗号(,)间隔。

    annotations:
      mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
  2. 执行以下命令,查看关联集群是否已成功添加至多集群网关。

    kubectl get mseingressconfig ackone-gateway -ojsonpath="{.status.remoteClusters}"

    预期输出:

    [{"clusterId":"c7fb82****"},{"clusterId":"cd3007****"}]

    预期输出中已包含指定的ClusterID,并且无Failed信息,表明关联集群已成功添加至多集群网关。

  3. 执行以下命令,查看当前已添加到多集群网关的关联集群。

    kubectl get mseingressconfig ackone-gateway
  4. 执行以下命令,在已有的基础上新增或删除关联集群。

    mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2}表示待添加到多集群网关的集群列表。

    kubectl annotate mseingressconfig ackone-gateway mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2} --overwrite=true

停用多集群网关功能

重要
  • 删除多集群网关将会对业务产生影响,请谨慎操作。

  • 当您确定不再使用多集群网关时,需要先删除多集群网关,再关闭多集群网关功能,避免产生额外资源损失

通过控制台停用

  1. 登录ACK One控制台,在左侧导航栏选择舰队 > 多集群网关

  2. 多集群网关页面上方的下拉框中选择要删除的目标多集群网关,然后在页面右上角单击删除

  3. 在弹出的对话框中输入待删除的多集群网关的名称,然后单击删除

  4. 确认ACK One Fleet实例下的所有多集群网关都已删除,然后在页面右上角单击关闭功能

  5. 在弹出的提示框中单击确定

通过命令行停用

  1. 执行以下命令,删除多集群网关。

    kubectl delete mseingressconfig ackone-gateway
  2. 执行以下命令,关闭多集群网关功能。

    aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled false