Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Le contrôleur ALB Ingress appelle les API Alibaba Cloud, notamment celles d'Application Load Balancer (ALB), de Resource Access Management (RAM), de VPC et d'ECS, afin de créer et de gérer les ressources d'équilibrage de charge pour le compte de votre cluster. Dans un cluster ACK dédié, le contrôleur s'exécute sur des nœuds de travail qui ne disposent d'aucune autorisation d'accès aux API cloud par défaut. Cette rubrique explique comment accorder les autorisations nécessaires pour permettre au contrôleur de gérer les ressources ALB.

Remarque

Cette étape s'applique uniquement aux clusters ACK dédiés. Pour les clusters ACK managés et les clusters ACK Serverless, le contrôleur ALB Ingress dispose déjà des autorisations requises ; aucune configuration supplémentaire n'est nécessaire.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster ACK dédié

  • Le composant ALB Ingress controller installé dans le cluster

Étape 1 : Créer une politique RAM personnalisée

  1. Connectez-vous à la console RAM en tant qu'utilisateur RAM disposant de droits administratifs.

  2. Dans le volet de navigation de gauche, sélectionnez Permissions > Policies.

  3. Sur la page Policies, cliquez sur Create Policy.

    image

  4. Sur la page Create Policy, cliquez sur l'onglet JSON.

    image

  5. Remplacez le contenu par défaut par le document de stratégie suivant, puis cliquez sur OK.

    Remarque

    Séparez plusieurs instructions de stratégie par des virgules (,).

    {
        "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"
            }
        ]
    }
  6. Dans la boîte de dialogue Create Policy, saisissez un Policy Name et une Description, puis cliquez sur OK.

Étape 2 : Attacher la politique au rôle RAM des nœuds de travail

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster, puis sur l'onglet Basic Information.

  3. Sur l'onglet Basic Information, cliquez sur le lien situé à droite de Worker RAM Role pour ouvrir la console RAM.

  4. Sur l'onglet Permissions, cliquez sur Grant Permission. Dans le panneau Grant Permission, recherchez et sélectionnez la politique personnalisée que vous avez créée à l'étape 1.

  5. Cliquez sur Grant Permissions, puis sur Close.

Étape 3 : Vérifier le rôle RAM de l'instance

  1. Dans le volet de navigation de gauche de la page des détails du cluster, sélectionnez Nodes > Nodes.

  2. Sur la page Nodes, cliquez sur l'ID d'instance d'un nœud de travail, par exemple i-2ze5d2qi9iy90pzb****.

  3. Sur la page des détails de l'instance, cliquez sur l'onglet Instance Details. Dans la section Other Information, vérifiez si un rôle RAM est affiché à côté de RAM Role. Si aucun rôle RAM n'est attaché, attachez-en un à l'instance ECS. Pour plus d'informations, consultez la rubrique Détacher ou modifier un rôle RAM d'instance.

Étape 4 : Redémarrer le pod du contrôleur ALB Ingress

Important

Effectuez cette opération pendant les heures creuses.

Redémarrez le pod alb-ingress-controller afin qu'il prenne en compte les nouvelles autorisations.

  1. Récupérez le nom du pod.

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

    Résultat attendu :

    NAME                          READY   STATUS    RESTARTS   AGE
    alb-ingress-controller-***    1/1     Running   0          60s
  2. Supprimez le pod. Remplacez alb-ingress-controller-*** par le nom obtenu à l'étape précédente.

    kubectl -n kube-system delete pod alb-ingress-controller-***

    Résultat attendu :

    pod "alb-ingress-controller-***" deleted
  3. Après quelques minutes, confirmez que le pod est de nouveau en cours d'exécution.

    kubectl -n kube-system get pod

    Résultat attendu :

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

    Un statut Running confirme que le contrôleur fonctionne correctement avec les nouvelles autorisations.

Étapes suivantes

Pour acheminer le trafic vers les services de votre cluster à l'aide d'ALB Ingress, consultez la rubrique Exposer des services avec un ALB Ingress.