Comment configurer le contrôleur AWS Load Balancer sur un cluster Amazon EKS pour Fargate ?
Je souhaite configurer le contrôleur AWS Load Balancer sur un cluster Amazon Elastic Kubernetes Service (Amazon EKS) pour AWS Fargate.
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.
Vous pouvez configurer le contrôleur AWS Load Balancer sans aucun déploiement de contrôleur Application Load Balancer Ingress existant.
Prérequis :
- Désinstallez le contrôleur AWS ALB Ingress pour Kubernetes existant. Le contrôleur AWS Load Balancer remplace ses fonctionnalités.
- Utilisez eksctl version 0.109.0 ou ultérieure. Pour en savoir plus, consultez la page Installation du site Web d’eksctl.
- Installez Helm sur votre poste de travail.
Créer un cluster Amazon EKS, une politique de compte de service AWS et des politiques de contrôle d’accès basé sur les rôles
Procédez comme suit :
-
Pour utiliser eksctl afin de créer un cluster Amazon EKS, exécutez la commande suivante :
eksctl create cluster \ --name YOUR_CLUSTER_NAME \ --version 1.28 \ --fargate
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster. Il n’est pas nécessaire de créer un rôle d’exécution de pod Fargate pour les clusters qui utilisent uniquement des pods Fargate (--fargate).
-
Pour autoriser le cluster à utiliser AWS Identity and Access Management (IAM) pour les comptes de service, exécutez la commande suivante :
eksctl utils associate-iam-oidc-provider \ --cluster YOUR_CLUSTER_NAME \ --approve
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster. Le **kubelet ** et le kube-proxy utilisent FargateExecutionRole pour exécuter votre pod Fargate. Cependant, FargateExecutionRole n'est pas le rôle IAM du pod Fargate. Pour les pods Fargate, vous devez utiliser le rôle IAM pour le compte de service.
-
Pour télécharger une politique IAM qui autorise le contrôleur AWS Load Balancer à passer des appels vers les API AWS en votre nom, exécutez la commande suivante :
-
curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json
-
Pour créer une politique IAM à l'aide de la politique téléchargée, exécutez la commande create-policy de l’interface de ligne de commande AWS suivante :
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
-
Pour créer un compte de service pour le contrôleur AWS Load Balancer, exécutez la commande suivante :
eksctl create iamserviceaccount \ --cluster=YOUR_CLUSTER_NAME \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \ --override-existing-serviceaccounts \ --approve
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster et AWS_ACCOUNT_ID par l’ID de votre compte. La commande précédente crée un compte de service nommé aws-load-balancer-controller dans l'espace de noms kube-system.
-
Pour vérifier que le nouveau rôle de service est créé, exécutez l'une des commandes suivantes :
eksctl get iamserviceaccount \ --cluster=YOUR_CLUSTER_NAME \ --name=aws-load-balancer-controller \ --namespace=kube-system
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster.
-ou-kubectl get serviceaccount aws-load-balancer-controller \ --namespace kube-system \ -o yaml
Installer le contrôleur AWS Load Balancer avec Helm
Procédez comme suit :
-
Pour ajouter le graphique Amazon EKS à Helm, exécutez la commande suivante :
helm repo add eks https://aws.github.io/eks-charts
-
Pour mettre à jour le référentiel et extraire le dernier graphique, exécutez la commande suivante :
helm repo update eks
-
Pour installer le graphique Helm, exécutez la commande suivante :
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ --set clusterName=YOUR_CLUSTER_NAME \ --set serviceAccount.create=false \ --set region=YOUR_REGION_CODE \ --set vpcId=EKS_CLUSTER_VPC_ID \ --set serviceAccount.name=aws-load-balancer-controller \ --version 1.11.0 \ -n kube-system
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster et YOUR_REGION_CODE par la région AWS de votre cluster. Remplacez également EKS_CLUSTER_VPC_ID par l'ID de cloud privé virtuel (VPC) du cluster.
-
Pour vérifier que le contrôleur est correctement installé, exécutez la commande suivante :
kubectl get deployment -n kube-system aws-load-balancer-controller
Exemple de sortie :
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Tester le contrôleur AWS Load Balancer
Pour tester votre mise en œuvre, utilisez le contrôleur AWS Load Balancer pour créer l'une des ressources suivantes :
- Un Application Load Balancer pour l'entrée
- Un Network Load Balancer dont le Type est LoadBalancer pour Service
Une ressource d'entrée achemine le trafic vers différents services en fonction de concepts Web tels que les URI, les noms d'hôte et les chemins. Il est recommandé d'utiliser une ressource d'entrée pour partager un équilibreur de charge avec plusieurs services ou pour contrôler le routage des services. Utilisez un Service LoadBalancer pour attribuer un équilibreur de charge dédié à votre service.
Remarque : Les étapes de test suivantes déploient un exemple d'application de jeu appelé 2048.
Créer un Application Load Balancer
Pour créer un Application Load Balancer pour l’entrée, procédez comme suit :
-
Pour créer le profil Fargate requis pour le déploiement du jeu, exécutez la commande suivante :
eksctl create fargateprofile \ --cluster YOUR_CLUSTER_NAME \ --region YOUR_REGION_CODE \ --name your-alb-sample-app \ --namespace game-2048
Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster et YOUR_REGION_CODE par votre région.
-
Pour déployer l'application, exécutez la commande suivante :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/examples/2048/2048_full.yaml
-
Patientez quelques minutes. Puis, exécutez la commande suivante pour vérifier que le contrôleur AWS Load Balancer a créé une ressource d'entrée :
kubectl get ingress/ingress-2048 -n game-2048
Exemple de sortie :
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.region.elb.amazonaws.com 80 3d4h
Si aucune ressource d’entrée n’apparaît après quelques minutes, exécutez la commande suivante pour consulter les journaux du contrôleur AWS Load Balancer :
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
Vérifiez dans les journaux l’existence de messages d’erreur susceptibles de vous aider à diagnostiquer les problèmes liés à votre déploiement.
-
Pour afficher l'application, ouvrez un navigateur, puis accédez à l'URL dans la sortie de la commande de ressource d’entrée.
Remarque : Si l’application n’est pas visible, patientez quelques minutes et actualisez votre navigateur.
Créer un Network Load Balancer
Pour déployer une application avec le service de mode d’adresse IP de Network Load Balancer, procédez comme suit :
-
Pour créer un profil Fargate, exécutez la commande suivante :
eksctl create fargateprofile --cluster your-cluster --region your-region-code --name your-alb-sample-app --namespace game-2048
Remarque : Remplacez your-cluster par le nom de votre cluster et your-region-code par la région de votre cluster.
-
Pour obtenir le manifeste permettant de déployer le jeu 2048, exécutez la commande suivante :
curl -o 2048-game.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/examples/2048/2048_full.yaml
-
Dans le manifeste, supprimez la section Entrée suivante :
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: game-2048 name: ingress-2048 annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: service-2048 port: number: 80
-
Modifiez l'objet Service pour utiliser les valeurs suivantes :
apiVersion: v1 kind: Service metadata: namespace: game-2048 name: service-2048 annotations: service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip" service.beta.kubernetes.io/aws-load-balancer-type: external service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app.kubernetes.io/name: app-2048
-
Pour créer le service et le manifeste de déploiement, exécutez la commande suivante :
kubectl apply -f 2048-game.yaml
-
Pour vérifier la création du service et le nom DNS du Network Load Balancer, exécutez la commande suivante :
kubectl get svc -n game-2048
Exemple de sortie :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service-2048 LoadBalancer 10.100.114.197 k8s-game2048-service2-xxxxxxxxxx-yyyyyyyyyy.us-east-2.elb.amazonaws.com 80:xxxxx/TCP 23m
-
Patientez quelques minutes jusqu’à ce que l’équilibreur de charge soit actif. Pour vérifier que vous pouvez accéder au déploiement, ouvrez un navigateur Web. Puis, ouvrez le nom de domaine complet (FQDN) dans la sortie de la commande sous EXTERNAL-IP.
Résoudre les problèmes liés au contrôleur AWS Load Balancer
Si vous rencontrez des problèmes lors de la configuration du contrôleur AWS Load Balancer, exécutez les commandes suivantes :
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller kubectl get endpoints -n game-2048 kubectl get ingress/ingress-2048 -n game-2048
Vérifiez la sortie de la commande logs pour les messages d'erreur, tels que des problèmes liés aux identifications ou aux sous-réseaux. Pour connaître les étapes de résolution des erreurs courantes, consultez la page Problèmes sur le site Web de GitHub. Aussi, consultez la section Comment résoudre les problèmes rencontrés lorsque j'utilise le contrôleur AWS Load Balancer pour créer un équilibreur de charge ?
La commande get endpoints vous indique si vous avez enregistré correctement les pods de déploiement sauvegardés. Les commandes get ingress vous indiquent si les ressources d’entrée sont déployées.
Pour en savoir plus, consultez la page Contrôleur AWS Load Balancer du site Web de Kubernetes.
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 5 moislg...
- Réponse acceptéedemandé il y a 10 moislg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 mois