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

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 集群信息页面上方单击集群资源页签。
  5. 集群资源页签单击Worker RAM角色右侧的K8sWorkerRole-****
    K8sWorkerRole链接
  6. RAM控制台确认并修改信任策略和RAM权限策略。
    1. K8sWorkerRole-****页面,单击信任策略管理页签。
    2. 查看当前信任策略是否与以下内容一致,若不一致,请单击修改信任策略,在修改信任策略面板修改为以下内容后单击确定
      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "ecs.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
    3. K8sWorkerRole-****页面,单击权限管理页签,然后单击K8sWorkerRolePolicy-****权限策略名称。
    4. 权限策略管理页面,查看是否包含以下ALB Ingress权限。若不完全包含,请单击修改策略内容。在修改策略内容面板添加以下内容后,单击确定
      {
                  "Action": [
                      "alb:TagResources",
                      "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:CreateServerGroup",
                      "alb:DeleteServerGroup",
                      "alb:UpdateServerGroupAttribute",
                      "alb:DescribeZones"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:CreateServiceLinkedRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": [
                              "alb.aliyuncs.com",
                              "logdelivery.alb.aliyuncs.com"
                          ]
                      }
                  }
              },
              {
                  "Action": [
                      "yundun-cert:DescribeSSLCertificateList",
                      "yundun-cert:DescribeSSLCertificatePublicKeyDetail"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
      说明 多个策略内容需要用半角逗号(,)分隔。
  7. 确认ECS实例的RAM角色状态是否正常。
    1. 在集群管理页左侧导航栏中,选择节点管理 > 节点
    2. 节点页面,单击目标节点的实例ID,例如i-2ze5d2qi9iy90pzb****
    3. 在目标实例页面,单击实例详情页签,然后在其它信息区域的RAM角色右侧查看是否存在该ECS实例的RAM角色。
      若没有对应的RAM角色,请为ECS实例指定RAM角色。具体操作,请参见步骤二:指定RAM角色创建并设置ECS实例
  8. 手动删除alb-ingress-controller的Pod并确认重建后Pod的状态。
    1. 执行以下命令删除alb-ingress-controller的Pod。
      kubectl -n kube-system delete pod alb-ingress-controller-xxx
      预期输出:
      pod "alb-ingress-controller-***1" deleted
    2. 等待几分钟后,执行以下命令查看重建后Pod的状态。
      kubectl -n kube-system get pod
      预期输出:
      NAME                          READY   STATUS    RESTARTS   AGE
      alb-ingress-controller-***2   1/1     Running   0          60s
      从预期输出可得,重建后Pod alb-ingress-controller-***2的状态为Running

后续步骤

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