为ACK专有集群授予ALB Ingress Controller访问权限

若您需要在ACK专有集群中通过ALB Ingress访问服务,部署服务前需要对云产品授予ALB Ingress Controller的相关权限。本文介绍如何对ACK专有集群中的ALB Ingress Controller组件授权。

前提条件

注意事项

ACK专有集群需要授予ALB Ingress Controller的访问权限,ACK托管集群ACK Serverless集群均无需为ALB Ingress Controller设置访问权限,即可使用ALB Ingress。

操作步骤

  1. 创建自定义权限策略。

    1. 在左侧导航栏,选择权限管理 > 权限策略

    2. 权限策略页面,单击创建权限策略

    3. 创建权限策略页面,单击脚本编辑页签。

    4. 创建权限策略页面,单击脚本编辑页签。输入以下权限策略内容,单击继续编辑基本信息

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "alb:EnableLoadBalancerIpv6Internet",
                      "alb:DisableLoadBalancerIpv6Internet",
                      "alb:CreateAcl",
                      "alb:DeleteAcl",
                      "alb:ListAcls",
                      "alb:ListAclRelations",
                      "alb:AddEntriesToAcl",
                      "alb:AssociateAclsWithListener",
                      "alb:ListAclEntries",
                      "alb:RemoveEntriesFromAcl",
                      "alb:DissociateAclsFromListener",
                      "alb:TagResources",
                      "alb:UnTagResources",
                      "alb:ListServerGroups",
                      "alb:ListServerGroupServers",
                      "alb:AddServersToServerGroup",
                      "alb:RemoveServersFromServerGroup",
                      "alb:ReplaceServersInServerGroup",
                      "alb:CreateLoadBalancer",
                      "alb:DeleteLoadBalancer",
                      "alb:UpdateLoadBalancerAttribute",
                      "alb:UpdateLoadBalancerEdition",
                      "alb:EnableLoadBalancerAccessLog",
                      "alb:DisableLoadBalancerAccessLog",
                      "alb:EnableDeletionProtection",
                      "alb:DisableDeletionProtection",
                      "alb:ListLoadBalancers",
                      "alb:GetLoadBalancerAttribute",
                      "alb:ListListeners",
                      "alb:CreateListener",
                      "alb:GetListenerAttribute",
                      "alb:UpdateListenerAttribute",
                      "alb:ListListenerCertificates",
                      "alb:AssociateAdditionalCertificatesWithListener",
                      "alb:DissociateAdditionalCertificatesFromListener",
                      "alb:DeleteListener",
                      "alb:CreateRule",
                      "alb:DeleteRule",
                      "alb:UpdateRuleAttribute",
                      "alb:CreateRules",
                      "alb:UpdateRulesAttribute",
                      "alb:DeleteRules",
                      "alb:ListRules",
                      "alb:UpdateListenerLogConfig",
                      "alb:CreateServerGroup",
                      "alb:DeleteServerGroup",
                      "alb:UpdateServerGroupAttribute",
                      "alb:UpdateLoadBalancerAddressTypeConfig",
                      "alb:AttachCommonBandwidthPackageToLoadBalancer",
                      "alb:DetachCommonBandwidthPackageFromLoadBalancer",
                      "alb:UpdateServerGroupServersAttribute",
                      "alb:MoveResourceGroup",
                      "alb:DescribeZones",
                      "alb:ListAScripts",
                      "alb:CreateAScripts",
                      "alb:UpdateAScripts",
                      "alb:DeleteAScripts"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:CreateServiceLinkedRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": [
                              "alb.aliyuncs.com",
                              "audit.log.aliyuncs.com",
                              "nlb.aliyuncs.com",
                              "logdelivery.alb.aliyuncs.com"
                          ]
                      }
                  }
              },
              {
                  "Action": [
                      "log:GetProductDataCollection",
                      "log:OpenProductDataCollection",
                      "log:CloseProductDataCollection"
                  ],
                  "Resource": "acs:log:*:*:project/*/logstore/alb_*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "yundun-cert:DescribeSSLCertificateList",
                      "yundun-cert:DescribeSSLCertificatePublicKeyDetail",
                      "yundun-cert:CreateSSLCertificateWithName",
                      "yundun-cert:DeleteSSLCertificate"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
      说明

      多个策略内容需要用英文半角逗号(,)分隔。

    5. 输入权限策略名称备注

    6. 单击确定

  2. 为集群的Worker RAM角色授权。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后单击基本信息页签。

    3. 基本信息页签,单击Worker RAM 角色右侧的链接,跳转至RAM控制台。

    4. 权限管理页签,单击新增授权,然后在新增授权面板的权限策略区域,筛选上一步已创建的自定义权限策略。

    5. 单击确认新增授权

    6. 单击关闭

  3. 确认ECS实例的RAM角色状态是否正常。

    1. 在集群管理页左侧导航栏,选择节点管理 > 节点

    2. 节点页面,单击目标节点的实例ID,例如i-2ze5d2qi9iy90pzb****

    3. 在目标实例页面,单击实例详情页签,然后在其他信息区域的RAM角色右侧查看是否存在该ECS实例的RAM角色。

      若没有对应的RAM角色,请为ECS实例指定RAM角色。具体操作,请参见使用实例RAM角色访问其他云资源

  4. 删除重建alb-ingress-controller的Pod,确保组件处于正常工作状态。

    重要

    请在业务低峰期进行删除重建Pod的操作。

    1. 执行以下命令,查询alb-ingress-controller的Pod名称。

      kubectl -n kube-system get pod | grep alb-ingress-controller

      预期输出:

      NAME                          READY   STATUS    RESTARTS   AGE
      alb-ingress-controller-***    1/1     Running   0          60s
    2. 执行以下命令删除alb-ingress-controller的Pod。

      替换alb-ingress-controller-***为上个步骤中获取到的实际值。

      kubectl -n kube-system delete pod alb-ingress-controller-***

      预期输出:

      pod "alb-ingress-controller-***" deleted
    3. 等待几分钟后,执行以下命令查看重建后的Pod状态。

      kubectl -n kube-system get pod

      预期输出:

      NAME                          READY   STATUS    RESTARTS   AGE
      alb-ingress-controller-***2    1/1     Running   0          60s

      预期输出结果表明,重建后Pod的状态为Running,组件处于正常工作状态。

后续操作

关于如何在ACK专有集群中通过ALB Ingress访问服务,请参见创建ALB Ingress