若您需要在ACK专有集群中通过ALB Ingress访问服务,部署服务前需要对云产品授予ALB Ingress Controller的相关权限。本文介绍如何对ACK专有集群中的ALB Ingress Controller组件授权。
前提条件
注意事项
仅ACK专有集群需要授予ALB Ingress Controller的访问权限,ACK托管集群、ACK Serverless集群均无需为ALB Ingress Controller设置访问权限,即可使用ALB Ingress。
操作步骤
创建自定义权限策略。
在左侧导航栏,选择 。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。
在创建权限策略页面,单击脚本编辑页签。输入以下权限策略内容,单击继续编辑基本信息。
{ "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" } ] }
说明多个策略内容需要用英文半角逗号(,)分隔。
输入权限策略名称和备注。
单击确定。
为集群的Worker RAM角色授权。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后单击基本信息页签。
在基本信息页签,单击Worker RAM 角色右侧的链接,跳转至RAM控制台。
在权限管理页签,单击新增授权,然后在新增授权面板的权限策略区域,筛选上一步已创建的自定义权限策略。
单击确认新增授权。
单击关闭。
确认ECS实例的RAM角色状态是否正常。
在集群管理页左侧导航栏,选择 。
在节点页面,单击目标节点的实例ID,例如i-2ze5d2qi9iy90pzb****。
在目标实例页面,单击实例详情页签,然后在其他信息区域的RAM角色右侧查看是否存在该ECS实例的RAM角色。
若没有对应的RAM角色,请为ECS实例指定RAM角色。具体操作,请参见使用实例RAM角色访问其他云资源。
删除重建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
预期输出结果表明,重建后Pod的状态为Running,组件处于正常工作状态。
后续操作
关于如何在ACK专有集群中通过ALB Ingress访问服务,请参见创建ALB Ingress。