Comment configurer un Application Load Balancer via le contrôleur AWS Load Balancer sur un groupe de nœuds Amazon EC2 dans Amazon EKS ?
Je souhaite configurer un Application Load Balancer via le contrôleur AWS Load Balancer sur un groupe de nœuds Amazon Elastic Compute Cloud (Amazon EC2) dans Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Connectez le contrôleur AWS Load Balancer aux points de terminaison de l'un des services AWS suivants :
- Gestion des identités et des accès AWS (AWS IAM)
- Amazon EC2
- AWS Certificate Manager (ACM)
- Elastic Load Balancing (ELB)
- Amazon Cognito
- AWS WAF
- AWS Shield
Pour que le contrôleur AWS Load Balancer fonctionne, vous devez disposer d'une connexion Internet sortante. Pour en savoir plus, consultez la page Comment configurer mes sous-réseaux pour un cluster Amazon EKS ?
Pour déployer le contrôleur AWS Load Balancer sur AWS Fargate, consultez la page Comment configurer le contrôleur AWS Load Balancer sur un cluster Amazon EKS pour Fargate et déployer le jeu 2048 ?
Résolution
Étiquetage de vos sous-réseaux pour permettre la découverte automatique
Étiquetez les sous-réseaux Amazon Virtual Private Cloud (Amazon VPC) dans votre cluster Amazon EKS. Votre contrôleur AWS Load Balancer peut ainsi découvrir 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 les étiquettes suivantes :
kubernetes.io/role/elb
Pour les Application Load Balancers internes, vous devez disposer d'au moins deux sous-réseaux privés dans le VPC de votre cluster avec les étiquettes suivantes :
kubernetes.io/role/internal-elb
Création d’un fournisseur d'identité OIDC pour votre cluster
Utilisez eksctl ou la console de gestion AWS pour créer un fournisseur d'identité OpenID Connect (OIDC) à utiliser avec les rôles IAM pour les comptes de service.
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.
Vous pouvez également utiliser AWS CLI pour créer un fournisseur d'identité OIDC pour votre cluster. Par exemple :
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. Vous pouvez obtenir l'empreinte numérique du certificat CA racine que votre cluster utilise avec oidc.eks.region-name.amazonaws.com.
Création d'une politique IAM pour le contrôleur AWS Load Balancer
La politique Amazon EKS que vous créez permet au contrôleur AWS Load Balancer d'effectuer des appels vers les API AWS. Lorsque vous accordez l'accès aux API AWS, il est recommandé d'utiliser des rôles AWS IAM pour les comptes de service.
-
Téléchargez une politique IAM pour le contrôleur AWS Load Balancer depuis GitHub. Exécutez l'une des commandes suivantes, en fonction de votre région.
Toutes les régions à l'exception de la Chine :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
Régions de Pékin et du Ningxia en Chine :
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json
-
Pour créer une politique IAM nommée AWSLoadBalancerControllerIAMPolicy pour votre profil d'instance de composant master, exécutez la commande suivante :
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json
-
Notez l'ARN de la politique qui est renvoyé dans la sortie.
-
Utilisez le rôle IAM existant ou créez un nouveau rôle IAM pour le contrôleur AWS Load Balancer.
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. -
Pour attacher AWSLoadBalancerControllerIAMPolicy aux rôles IAM, exécutez la commande suivante :
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name role-name
Remarque : remplacez 111122223333 par votre identifiant de compte AWS et role-name par le nom de votre rôle IAM.
Déploiement du contrôleur AWS Load Balancer
-
Vérifiez que vous disposez des étiquettes requises pour l'équilibreur de charge associé à vos sous-réseaux.
-
Installez cert-manager afin de pouvoir injecter la configuration du certificat dans les webhooks. Utilisez Kubernetes version 1.16 ou ultérieure pour exécuter la commande suivante :
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$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/$VERSION/v2_6_2_full.yaml
Remarque : remplacez $VERSION par la version du contrôleur AWS Load Balancer que vous souhaitez déployer et modifiez le nom du fichier, par exemple v2_6_2_full.yaml pour la version 2.6.2. Pour en savoir plus, consultez le référentiel Kubernetes sur le site de GitHub.
-
Modifiez le nom de votre cluster dans cluster-name. Par exemple :
spec: containers: - args: - --cluster-name=your-cluster-name # edit the cluster name - --ingress-class=alb
-
Mettez à jour uniquement la section ServiceAccount du fichier. Par exemple :
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: # Add the annotations line eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/role-name # Add the IAM role name: aws-load-balancer-controller namespace: kube-system
Remarque : remplacez 111122223333 par votre identifiant de compte et role-name par le nom de votre rôle IAM.
-
Pour déployer le contrôleur AWS Load Balancer, exécutez la commande suivante :
kubectl apply -f ingress-controller.yaml
Déploiement d’un échantillon d'application pour tester le contrôleur AWS Load Balancer
Déployez un échantillon d'application pour vérifier que le contrôleur AWS Load Balancer crée un Application Load Balancer public en raison de l'objet d’entrée.
- Pour déployer un jeu appelé 2048 en tant qu'échantillon d'application, exécutez la commande suivante :
Remarque : remplacez $VERSION par la version (provenant de la page Kubernetes SIGs du site web GitHub) du contrôleur AWS Load Balancer que vous souhaitez déployer.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
- Pour vérifier que la ressource d’entrée a été créée, attendez quelques minutes, puis exécutez la commande suivante :
Vous obtiendrez une sortie similaire à l’exemple suivant :kubectl get ingress/ingress-2048 -n game-2048
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s
- Si votre entrée n’est pas créée après quelques minutes, exécutez la commande suivante pour consulter les journaux du contrôleur AWS Load Balancer :
Remarque : les journaux du contrôleur AWS Load Balancer affichent souvent des messages d'erreur pour vous aider à résoudre les problèmes liés à votre déploiement.kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
- Pour consulter l'échantillon d'application, ouvrez un navigateur Web, puis accédez à l'adresse URL figurant dans le sortie de l'étape 2.
- Pour effacer l'échantillon d'application, exécutez la commande suivante :
Remarque : remplacez $VERSION par la version (provenant de la page Kubernetes SIGs du site web GitHub) du contrôleur AWS Load Balancer que vous souhaitez déployer.kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Informations connexes
Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 7 moislg...
- demandé il y a 2 anslg...
- demandé il y a 6 jourslg...
- AWS OFFICIELA mis à jour il y a 10 mois