Comment puis-je configurer le contrôleur AWS Load Balancer sur un cluster Amazon EKS pour Fargate et déployer le jeu 2048 ?
Je souhaite configurer le contrôleur AWS Load Balancer sur un cluster Amazon Elastic Kubernetes Service (Amazon EKS) pour AWS Fargate. Après cela, je souhaite déployer le jeu 2048.
Brève description
Vous pouvez configurer le contrôleur AWS Load Balancer sans aucun déploiement de contrôleur Ingress d’Application Load Balancer (ALB) existant.
Avant de configurer le contrôleur AWS Load Balancer sur un nouveau cluster Fargate, prenez les mesures suivantes :
- Désinstallez le contrôleur Ingress AWS ALB pour Kubernetes. Le contrôleur AWS Load Balancer remplace les fonctionnalités du contrôleur Ingress AWS ALB.
- Utilisez eksctl version 0.109.0 ou supérieure. Pour en savoir plus, consultez la page Installation du site Web eksctl.
- Installez Helm sur le poste de travail.
- Remplacez les valeurs des espaces réservés dans les extraits de code par vos propres valeurs.
Résolution
Créer un cluster Amazon EKS, une politique de compte de service et des politiques de contrôle d’accès basé sur les rôles (RBAC)
Pour créer un cluster et des politiques, 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 : 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).
-
Autorisez le cluster à utiliser AWS Identity and Access Management (IAM) pour les comptes de service en exécutant la commande suivante :
eksctl utils associate-iam-oidc-provider --cluster YOUR_CLUSTER_NAME --approve
Remarque : la valeur FargateExecutionRole correspond au rôle utilisé pour que kubelet et kube-proxy exécutent votre pod Fargate. Cependant, ce n’est pas le rôle utilisé pour le pod Fargate (c’est-à-dire aws-load-balancer-controller). Pour les pods Fargate, vous devez utiliser le rôle IAM pour le compte de service. Pour en savoir plus, consultez la page Rôles IAM pour les comptes 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.6.1/docs/install/iam_policy.json
-
Créez une politique IAM à partir de la politique que vous avez téléchargée. Utilisez la commande suivante :
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
-
Créez un compte de service nommé aws-load-balancer-controller dans l’espace de noms kube-system pour le contrôleur AWS Load Balancer. Utilisez 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
-
Exécutez l’une des commandes suivantes pour vérifier que le nouveau rôle de service est créé :
eksctl get iamserviceaccount --cluster YOUR_CLUSTER_NAME --name aws-load-balancer-controller --namespace kube-system
-ou-
kubectl get serviceaccount aws-load-balancer-controller --namespace kube-system
Installer le contrôleur AWS Load Balancer avec Helm
Pour installer le contrôleur AWS Load Balancer, 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
-
Mettez à jour le référentiel pour obtenir le graphique le plus récent :
helm repo update eks
-
Exécutez la commande suivante pour installer les Charts de Helm. Remarque : remplacez clusterName, region et vpcId par vos valeurs :
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=<VPC_ID> \ --set serviceAccount.name=aws-load-balancer-controller \ -n kube-system
-
Vérifiez que le contrôleur est installé avec succès :
$ 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
Utilisez le contrôleur AWS Load Balancer pour créer un Application Load Balancer pour Ingress ou un Network Load Balancer. Utilisez l’un d’entre eux pour créer un service k8s. Pour déployer un exemple d’application appelé 2048 avec l’Application Load Balancer Ingress, procédez comme suit :
-
Créez le profil Fargate requis pour le déploiement du jeu. Utilisez la commande suivante :
eksctl create fargateprofile --cluster your-cluster --region your-region-code --name your-alb-sample-app --namespace game-2048
-
Pour déployer l’exemple de jeu et vérifier que le contrôleur AWS Load Balancer crée une ressource Ingress ALB, exécutez la commande suivante :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.6.1/docs/examples/2048/2048_full.yaml
-
Après quelques minutes, vérifiez que la ressource Ingress a été créée en exécutant la commande suivante :
kubectl get ingress/ingress-2048 -n game-2048
Vous recevez le résultat suivant :
NAME CLASS HOSTS ADDRESS. PORTS AGE ingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-
Remarque : si votre Ingress n’est pas créé 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
Les journaux peuvent contenir des messages d’erreur susceptibles de vous aider à diagnostiquer les problèmes liés à votre déploiement.
-
Pour consulter l’exemple d’application, ouvrez un navigateur. Ensuite, accédez à l’URL ADRESSE issue de la sortie de commande précédente.
Remarque : si vous ne voyez pas l’exemple d’application, patientez quelques minutes et actualisez votre navigateur.
Déployer un exemple d’application
Pour déployer un exemple d’application avec le service de mode d’adresse IP 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
-
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.6.1/docs/examples/2048/2048_full.yaml
-
Dans le manifeste de l’étape 2, supprimez cette section Ingress :
apiVersion: networking.k8s.io/v1kind: 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 :
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
Vous recevez le résultat suivant :
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:30159/TCP 23m
-
Patientez quelques minutes jusqu’à ce que l’équilibreur de charge soit actif. Vérifiez ensuite que vous pouvez accéder au déploiement. Ouvrez le nom de domaine complet (FQDN) du NLB référencé dans la section IP EXTERNE d’un navigateur Web.
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, 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
La sortie de la commande journaux renvoie des messages d’erreur (avec des balises ou des sous-réseaux, par exemple). Ces messages d’erreur peuvent vous aider à corriger les erreurs courantes (sur le site Web GitHub Kubernetes). La commande obtenir les points de terminaison vous indique si les pods de déploiement sauvegardés sont correctement enregistrés. Les commandes obtenir ingress vous indiquent si les ressources Ingress sont déployées. Pour en savoir plus, consultez la page AWS Load Balancer Controller du site Web Kubernetes.
Vidéos associées
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a un anlg...
- demandé il y a 8 moislg...
- demandé il y a un anlg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an