Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Grant permissions to the ALB Ingress Controller

Última atualização: Oct 13, 2026

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

  1. Faça login no console do RAM como um usuário RAM com direitos administrativos.

  2. No painel de navegação à esquerda, escolha Permissions > Policies.

  3. Na página Policies, clique em Create Policy.

    image

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

    image

    O modelo de política padrão contém Version (definido como "1") e um array Statement. Cada instrução inclui Effect (valor padrão: "Allow"), Action, Resource e Condition. Especifique as ações e os recursos necessários em Action e Resource.

  5. 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 (,).
  6. 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

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster e, em seguida, na aba Basic Information.

  3. Na aba Basic Information, clique no link à direita de Worker RAM Role para abrir o console do RAM.

  4. 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.

  5. Clique em OK.

  6. Clique em Close.

Etapa 3: Verifique a função RAM da instância

  1. No painel de navegação à esquerda da página de detalhes do cluster, escolha Nodes > Nodes.

  2. Na página Nodes, clique no ID da instância de um nó worker (por exemplo, i-2ze5d2qi9iy90pzb****).

  3. 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

Importante

Execute esta etapa fora do horário de pico.

Reinicie o pod alb-ingress-controller para garantir o funcionamento correto do add-on.

  1. Obtenha o nome do pod.

    kubectl -n kube-system get pod | grep alb-ingress-controller

    Saída esperada:

    NAME                          READY   STATUS    RESTARTS   AGE
    alb-ingress-controller-***    1/1     Running   0          60s
  2. 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
  3. Após alguns minutos, confirme se o pod está em execução novamente.

    kubectl -n kube-system get pod

    Saída esperada:

    NAME                           READY   STATUS    RESTARTS   AGE
    alb-ingress-controller-***2    1/1     Running   0          60s

    O 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.