授予ALB Ingress Controller访问权限
若您需要在ACK专有版集群中通过ALB Ingress访问服务,部署服务前需要对云产品授予ALB Ingress Controller的相关权限。本文介绍如何对ACK专有版集群中的ALB Ingress Controller授权。
操作步骤
仅ACK专有版集群需要授予ALB Ingress Controller访问权限,其他集群无需为ALB Ingress Controller设置访问权限,即可使用ALB Ingress。
- 登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后单击集群资源页签。
在集群资源页签,单击Worker RAM角色右侧的KubernetesWorkerRole-****。
在RAM控制台确认并修改信任策略和RAM权限策略。
在KubernetesWorkerRole-****页面,单击信任策略管理页签。
查看当前信任策略是否与以下内容一致,若不一致,请单击修改信任策略,在修改信任策略面板修改为以下内容后单击确定。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }
在KubernetesWorkerRole-****页面,单击权限管理页签,然后单击K8sWorkerRolePolicy-****权限策略名称。
在权限策略管理页面,查看是否包含以下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" }
说明多个策略内容需要用英文半角逗号(,)分隔。
确认ECS实例的RAM角色状态是否正常。
- 在集群管理页左侧导航栏,选择 。
在节点页面,单击目标节点的实例ID,例如i-2ze5d2qi9iy90pzb****。
在目标实例页面,单击实例详情页签,然后在其它信息区域的RAM角色右侧查看是否存在该ECS实例的RAM角色。
若没有对应的RAM角色,请为ECS实例指定RAM角色。具体操作,请参见步骤二:指定RAM角色创建并设置ECS实例。
手动删除alb-ingress-controller的Pod并确认重建后Pod的状态。
执行以下命令,查询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
执行以下命令删除alb-ingress-controller的Pod。
替换
alb-ingress-controller-***
为上个步骤中获取到的实际值。kubectl -n kube-system delete pod alb-ingress-controller-***
预期输出:
pod "alb-ingress-controller-***" deleted
等待几分钟后,执行以下命令查看重建后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访问服务。