授予ALB Ingress Controller访问权限

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

操作步骤

说明

仅ACK专有版集群需要授予ALB Ingress Controller访问权限,其他集群无需为ALB Ingress Controller设置访问权限,即可使用ALB Ingress。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群
  2. 集群列表页面,单击目标集群名称,然后单击集群资源页签。

  3. 集群资源页签,单击Worker RAM角色右侧的KubernetesWorkerRole-****

    K8sWorkerRole链接
  4. RAM控制台确认并修改信任策略和RAM权限策略。

    1. KubernetesWorkerRole-****页面,单击信任策略管理页签。

    2. 查看当前信任策略是否与以下内容一致,若不一致,请单击修改信任策略,在修改信任策略面板修改为以下内容后单击确定

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "ecs.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
    3. KubernetesWorkerRole-****页面,单击权限管理页签,然后单击K8sWorkerRolePolicy-****权限策略名称。

    4. 在权限策略管理页面,查看是否包含以下ALB Ingress权限。若不完全包含,请单击修改策略内容。在修改策略内容面板添加以下内容后,单击确定

      {
                  "Action": [
                      "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:CreateServerGroup",
                      "alb:DeleteServerGroup",
                      "alb:UpdateServerGroupAttribute",
                      "alb:DescribeZones",
                      "alb:CreateAcl",
                      "alb:DeleteAcl",
                      "alb:ListAcls",
                      "alb:AddEntriesToAcl",
                      "alb:AssociateAclsWithListener",
                      "alb:ListAclEntries",
                      "alb:RemoveEntriesFromAcl",
                      "alb:DissociateAclsFromListener",
                      "alb:EnableLoadBalancerIpv6Internet",
                      "alb:DisableLoadBalancerIpv6Internet"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:CreateServiceLinkedRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": [
                              "alb.aliyuncs.com",
                              "audit.log.aliyuncs.com",
                              "logdelivery.alb.aliyuncs.com"
                          ]
                      }
                  }
              },
              {
                  "Action": [
                      "yundun-cert:DescribeSSLCertificateList",
                      "yundun-cert:DescribeSSLCertificatePublicKeyDetail",
                      "yundun-cert:CreateSSLCertificateWithName",
                      "yundun-cert:DeleteSSLCertificate"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
      说明

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

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

    1. 在集群管理页左侧导航栏,选择节点管理 > 节点
    2. 节点页面,单击目标节点的实例ID,例如i-2ze5d2qi9iy90pzb****

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

      若没有对应的RAM角色,请为ECS实例指定RAM角色。具体操作,请参见步骤二:指定RAM角色创建并设置ECS实例

  6. 手动删除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

      从预期输出可得,重建后Podalb-ingress-controller-***2的状态为Running

后续步骤

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

阿里云首页 容器服务Kubernetes版 相关技术圈