O ALB Ingress Controller chama operações de API do Application Load Balancer (ALB), Resource Access Management (RAM), Virtual Private Cloud (VPC) e Elastic Compute Service (ECS). Em um cluster dedicado ACK, os nós worker não têm permissões de API cloud por padrão. Portanto, conceda essas permissões antes de implantar serviços expostos via ALB Ingress.
Pré-requisitos
Antes de começar, verifique se as seguintes condições foram atendidas:
Observações de uso
Conceda permissões ao ALB Ingress Controller apenas em clusters dedicados ACK. Em clusters gerenciados ACK e clusters ACK Serverless, o ALB Ingress está disponível sem a necessidade de concessão de permissões ao ALB Ingress Controller.
Etapa 1: Crie uma política personalizada do RAM
Faça login no console do RAM como um usuário RAM com direitos administrativos.
No painel de navegação à esquerda, escolha Permissions > Policies.
-
Na página Policies, clique em Create Policy.

-
Na página Create Policy, clique na aba JSON Editor.

O modelo de política padrão contém
Version(definido como"1") e um arrayStatement. Cada instrução incluiEffect(valor padrão:"Allow"),Action,ResourceeCondition. Especifique as ações e os recursos necessários emActioneResource. -
Substitua o conteúdo padrão pelo seguinte documento de política e clique em OK.
{ "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" }, { "Action": "vpc:DescribeVSwitches", "Resource": "*", "Effect": "Allow" }, { "Action": "ecs:DescribeNetworkInterfaces", "Resource": "*", "Effect": "Allow" } ] }Separe vários documentos de política com vírgulas (,).
Na caixa de diálogo Create Policy, insira um Policy Name e uma Description e clique em OK.
Etapa 2: Anexar a política à função RAM do worker
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster e, em seguida, na aba Basic Information.
Na aba Basic Information, clique no link à direita de Worker RAM Role para abrir o console do RAM.
Na aba Permissions, clique em Attach Policy. No painel Attach Policy, seção Policies, filtre e selecione a política personalizada criada na etapa anterior.
Clique em OK.
Clique em Close.
Etapa 3: Verifique a função RAM da instância
No painel de navegação à esquerda da página de detalhes do cluster, escolha Nodes > Nodes.
Na página Nodes, clique no ID da instância de um nó worker (por exemplo,
i-2ze5d2qi9iy90pzb****).Na página de detalhes da instância, clique na aba Instance Details. Na seção Other Information, verifique se há uma função RAM exibida ao lado de RAM Role. Se nenhuma função RAM estiver anexada, anexe uma à instância ECS. Para mais informações, consulte Desanexar ou alterar uma função RAM de instância.
Etapa 4: Reiniciar o pod do ALB Ingress Controller
Execute esta etapa fora do horário de pico.
Reinicie o pod alb-ingress-controller para garantir o funcionamento correto do add-on.
-
Obtenha o nome do pod.
kubectl -n kube-system get pod | grep alb-ingress-controllerSaída esperada:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-*** 1/1 Running 0 60s -
Exclua o pod. Substitua
alb-ingress-controller-***pelo nome obtido na etapa anterior.kubectl -n kube-system delete pod alb-ingress-controller-***Saída esperada:
pod "alb-ingress-controller-***" deleted -
Após alguns minutos, confirme se o pod está em execução novamente.
kubectl -n kube-system get podSaída esperada:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-***2 1/1 Running 0 60sO status Running confirma que o ALB Ingress Controller funciona corretamente com as novas permissões.
Próximos passos
Para rotear tráfego para serviços no cluster usando ALB Ingress, consulte Expor serviços com um ALB Ingress.