Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Comment utiliser AWS Load Balancer Controller pour configurer un Application Load Balancer sur un groupe de nœuds Amazon EC2 dans Amazon EKS ?
Je souhaite utiliser AWS Load Balancer Controller pour configurer un Application Load Balancer sur un groupe de nœuds Amazon Elastic Compute Cloud (Amazon EC2) dans Amazon Elastic Kubernetes Service (Amazon EKS).
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Prérequis : Configurez vos sous-réseaux pour autoriser l'accès Internet sortant depuis vos composants master. AWS Load Balancer Controller nécessite une connexion Internet sortante.
Pour déployer AWS Load Balancer Controller sur AWS Fargate, consultez la section Comment configurer AWS Load Balancer Controller sur un cluster Amazon EKS pour Fargate ?
Identifier vos sous-réseaux
Identifiez les sous-réseaux Amazon Virtual Private Cloud (Amazon VPC) dans votre cluster Amazon EKS. Une fois que vous avez identifié vos sous-réseaux, votre AWS Load Balancer Controller peut ainsi détecter automatiquement les sous-réseaux lorsque vous créez la ressource Application Load Balancer.
Pour les Application Load Balancers publics, vous devez disposer d'au moins deux sous-réseaux publics dans le VPC de votre cluster avec l’identification kubernetes.io/role/elb :
Pour les Application Load Balancers privés, vous devez disposer d'au moins deux sous-réseaux privés dans le VPC de votre cluster avec l’identification kubernetes.io/role/internal-elb.
Créer un fournisseur d'identité OIDC
Utilisez la console Amazon EKS, l'interface de ligne de commande AWSL ou eksctl pour créer un fournisseur d'identité OIDC à utiliser avec les rôles Gestion des identités et des accès AWS (AWS IAM) pour les comptes de service (IRSA).
Console Amazon EKS
Pour utiliser la console, consultez la section Créer un fournisseur d'identité OIDC (console AWS).
CLI AWSL
Localisez l'empreinte numérique de l'autorité de certification (CA) racine utilisée par votre cluster. Puis, exécutez la commande create-open-id-connect-provider suivante :
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text)aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Remarque : Remplacez cluster-name par le nom de votre cluster, region-name par votre région AWS et ca-thumbprint par l'empreinte numérique de votre certificat CA racine.
eksctl
Pour utiliser l'outil de ligne de commande eksctl, consultez la section Créer un fournisseur d'identité OIDC (eksctl).
Créer une politique IAM
Créez une politique IAM qui permet à AWS Load Balancer Controller d'effectuer des appels vers les API AWS.
Important : Il est recommandé d'utiliser IRSA lorsque vous accordez l'accès aux API AWS.
Procédez comme suit :
-
Exécutez l'une des commandes suivantes en fonction de votre région pour télécharger une politique IAM pour AWS Load Balancer Controller depuis GitHub.
Pour toutes les régions, à l'exception des régions de Pékin et de Ningxia, en Chine, exécutez la commande describe-cluster suivante :ISSUER_URL= aws eks describe-cluster --name example-cluster-name \ --query "cluster.identity.oidc.issuer" --region example-region-name --output text aws iam create-open-id-connect-provider \ --url example-issuer-url \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region example-region-nameRemarque : Remplacez example-cluster-name par le nom de votre cluster, example-region-name par votre région et example-issuer-url par l'URL de votre émetteur.
Pour les régions de Pékin et du Ningxia en Chine, exécutez la commande curl suivante :curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json -
Exécutez la commande create-policy suivante pour créer une politique IAM nommée AWSLoadBalancerControllerIAMPolicy pour votre profil d'instance de composant master :
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json -
Notez l'Amazon Resource Name (ARN) de la politique renvoyée par la commande.
-
Utilisez le rôle IAM existant ou créez un nouveau rôle IAM pour AWS Load Balancer Controller.
Remarque : Pour utiliser eksctl afin de créer un rôle IAM, utilisez le paramètre --attach-policy-arn avec l'ARN de la politique IAM AWSLoadBalancerControllerIAMPolicy. -
Exécutez la commande attach-role-policy suivante pour associer AWSLoadBalancerControllerIAMPolicy à votre rôle IAM :
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \--role-name role-nameRemarque : Remplacez 111122223333 par votre identifiant de compte AWS et role-name par le nom de votre rôle IAM.
Déployer AWS Load Balancer Controller
Procédez comme suit :
-
Vérifiez que vous disposez de l’identification requise pour l'équilibreur de charge associé à vos sous-réseaux.
-
Exécutez la commande suivante avec Kubernetes 1.16 ou version ultérieure pour installer cert-manager :
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/example-version/cert-manager.yaml -
Dans le fichier manifeste que vous avez téléchargé depuis le site de GitHub, exécutez la commande suivante :
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/example-version/v2_13_3_full.yamlRemarque : Remplacez example-version par la version d’AWS Load Balancer Controller que vous souhaitez déployer. Pour vérifier la version d’AWS Load Balancer Controller, consultez la page SIG Kubernetes sur le site Web de GitHub. Veillez à modifier le nom du fichier afin qu'il corresponde à votre version. Dans l'exemple de code précédent, v2_13_3_full.yaml correspond à AWS Load Balancer Controller v2.13.3. Pour en savoir plus, consultez la page aws-load-balancer-controller sur le site Web de GitHub.
-
Effectuez les mises à jour suivantes dans la section ServiceAccount du fichier .yaml :
spec: containers: - args: - --cluster-name=example-cluster-name - --ingress-class=albRemarque : Remplacez example-cluster-name par le nom de votre cluster.
Dans l'exemple suivant, 111122223333 correspond à l'ID du compte et example-role-name au nom du rôle IAM :apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/example-role-name name: aws-load-balancer-controller namespace: kube-system -
Exécutez la commande suivante pour déployer AWS Load Balancer Controller :
kubectl apply -f ingress-controller.yaml
Déployer un exemple d'application
Déployez un exemple d'application pour vérifier qu’AWS Load Balancer Controller crée un Application Load Balancer public en raison de l'objet entrant.
Procédez comme suit :
-
Exécutez la commande suivante pour déployer un jeu appelé 2048 :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlRemarque : Remplacez example-version par la version d’AWS Load Balancer Controller que vous souhaitez déployer. Pour vérifier la version de votre AWS Load Balancer Controller, consultez la page SIG Kubernetes sur le site Web de GitHub.
-
Après quelques minutes, exécutez la commande suivante pour vérifier que Kubernetes a créé la ressource entrante :
kubectl get ingress/ingress-2048 -n game-2048Exemple de sortie :
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s -
Si Kubernetes ne crée pas votre ressource entrante, exécutez la commande suivante pour consulter les journaux d'AWS Load Balancer Controller afin de détecter les messages d'erreur de déploiement :
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller -
Pour voir le jeu, ouvrez un navigateur Web, puis saisissez l'adresse URL figurant dans le résultat de l'étape 2.
-
Exécutez la commande suivante pour supprimer le jeu :
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlRemarque : Remplacez example-version par la version d’AWS Load Balancer Controller que vous souhaitez déployer.
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a 3 ans
- demandé il y a 4 mois
AWS OFFICIELA mis à jour il y a 10 mois