Comment créer une entrée ALB dans Amazon EKS et associer l'entrée ALB à AWS WAF ?
Je souhaite créer un Application Load Balancer (ALB) en utilisant un contrôleur de l'équilibreur de charge AWS dans Amazon Elastic Kubernetes Service (Amazon EKS). Ensuite, je veux associer l'entrée ALB à AWS WAF.
Brève description
Le contrôleur de l'équilibreur de charge AWS crée un Application Load Balancer lorsqu'un objet d'entrée est créé à l'aide de l'annotation kubernetes.io/ingress.class: alb. La ressource d'entrée configure l'Application Load Balancer pour acheminer le trafic HTTP ou HTTPS vers différents pods au sein de votre cluster Amazon EKS. Vous pouvez utiliser AWS WAF pour surveiller les requêtes HTTP ou HTTPS qui sont transférées à l'Application Load Balancer.
Solution
Créer un fournisseur OIDC et un rôle IAM pour le contrôleur de l'équilibreur de charge AWS
1. Créez un fournisseur OIDC AWS Identity and Access Management (IAM) et associez le fournisseur OIDC à votre cluster :
eksctl utils associate-iam-oidc-provider --region region-code --cluster your-cluster-name --approve
2. Téléchargez une stratégie IAM pour le contrôleur de l'équilibreur de charge AWS :
curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json
Remarque : la stratégie IAM permet au contrôleur de l'équilibreur de charge AWS d'appeler les API AWS en votre nom.
3. Créez une stratégie IAM à l'aide de la stratégie que vous avez téléchargée à l'étape 2 :
aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json
Remarque : copiez le nom de l'ARN (Amazon Resource Name) de la stratégie qui a été renvoyé à l'étape 3.
4. Créez un rôle IAM pour le contrôleur de l'équilibreur de charge AWS et attachez le rôle au compte de service créé à l'étape 2 :
eksctl create iamserviceaccount --cluster=your-cluster --namespace=kube-system --name=aws-load-balancer-controller --attach-policy-arn=arn:aws:iam::YOUR_AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy --override-existing-serviceaccounts --approve
Désinstallez le contrôleur d'entrée AWS ALB pour Kubernetes
Le contrôleur de l'équilibreur de charge AWS remplace les fonctionnalités du contrôleur d'entrée AWS ALB pour Kubernetes.
Vérifiez si le contrôleur d'entrée AWS ALB est installé :
kubectl get deployment -n kube-system alb-ingress-controller
Si le contrôleur d'entrée AWS ALB n'est pas installé, vous recevez la sortie suivante :
Error from server (NotFound): deployments.apps "alb-ingress-controller" not found
Passez à la section Installer le contrôleur de l'équilibreur de charge AWS à l'aide de Helm 3.0.0.
-ou-
Si le contrôleur d'entrée AWS ALB est installé, vous recevez la sortie suivante :
NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
Procédez comme suit :
1. Supprimez le contrôleur d'entrée AWS ALB :
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml
Maintenant, procédez comme suit pour ajouter une politique IAM à votre rôle IAM. La stratégie IAM donne au contrôleur de l'équilibreur de charge AWS l'accès aux ressources créées par le contrôleur d'entrée AWS ALB pour Kubernetes.
1. Téléchargez la stratégie IAM :
curl -o iam_policy_v1_to_v2_additional.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy_v1_to_v2_additional.json
2. Créez la stratégie IAM et puis notez l'ARN renvoyé :
aws iam create-policy --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy --policy-document file://iam_policy_v1_to_v2_additional.json
3. Attachez la stratégie IAM au rôle IAM que vous avez créé précédemment :
aws iam attach-role-policy --role-name eksctl-your-role name --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy
Remarque : si vous avez créé le rôle à l'aide de eksctl, utilisez la console AWS CloudFormation pour trouver le rôle. Choisissez la pile eksctl-your-cluster-name-addon-iamserviceaccount-kube-system-aws-load-balancer-controller. Ensuite, choisissez l'onglet Resources (Ressources). Le nom du rôle se trouve dans la colonne Physical ID (ID physique). Si vous avez créé le rôle à l'aide de la console de gestion AWS, le nom du rôle est celui que vous lui avez donné. Par exemple : AmazonEKSLoadBalancerControllerRole.
Installer le contrôleur de l'équilibreur de charge AWS à l'aide de Helm 3.0.0
1. Installez les définitions de ressources personnalisées TargetGroupBinding :
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"
2. Ajoutez le référentiel eks-charts :
helm repo add eks https://aws.github.io/eks-charts
3. Installez le contrôleur de l'équilibreur de charge AWS à l'aide de la commande qui correspond à la région AWS de votre cluster :
helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller --set clusterName=your-cluster-name --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller -n kube-system
Remarque : si vous déployez sur Amazon EKS pour Fargate, vous devez ajouter les indicateurs suivants à votre commande :
* --set region=your-region-code * --set vpcId=your-vpc-xxxxxxxx
4. Vérifiez que le contrôleur de l'équilibreur de charge AWS est installé :
kubectl get deployment -n kube-system aws-load-balancer-controller
5. Créez une ressource d'entrée Kubernetes sur votre cluster avec l'annotation suivante :
annotations: kubernetes.io/ingress.class: alb
Remarque : le contrôleur de l'équilibreur de charge AWS crée des équilibreurs de charge. La ressource d'entrée configure l'Application Load Balancer pour acheminer le trafic HTTP ou HTTPS vers différents pods au sein de votre cluster.
6. Ajoutez une annotation internal ou internet-facing pour spécifier où vous souhaitez que l'entrée crée votre équilibreur de charge :
alb.ingress.kubernetes.io/scheme: internal
-ou-
alb.ingress.kubernetes.io/scheme: internet-facing
Remarque : choisissez internal pour créer un équilibreur de charge interne ou internet-facing pour créer un équilibreur de charge accessible au public.
Déployer un exemple d'application
1. Déployez un exemple d'application pour vérifier que le contrôleur d'entrée ALB crée un Application Load Balancer à la suite de l'objet d'entrée :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/examples/2048/2048_full.yaml
2. Vérifiez que la ressource d'entrée est créée et qu'elle est associée à un Application Load Balancer :
kubectl get ingress ingress-2048 -n game-2048
Exemple de sortie :
NAME HOSTS ADDRESS PORTS AGE ingress-2048 * example-2048game-2048ingr-xxxxxxx.region-code.elb.amazonaws.com 80 2h
Valider l'adresse de l'Application Load Balancer
1. Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).
2. Dans la barre de navigation, choisissez Région. Veillez à sélectionner la même région que celle que vous avez sélectionnée pour votre cluster Amazon EKS.
3. Dans le panneau de navigation, dans la section LOAD BALANCING (Équilibrage de charge), choisissez Load Balancers (Équilibreurs de charge).
4. Validez l'adresse de votre Application Load Balancer pour voir si l'objet d'entrée a créé la ressource Application Load Balancer.
Créer une liste d'accès Web
Lorsque vous créez une liste d'accès Web, choisissez la même région que celle que vous utilisez pour votre cluster Amazon EKS et procédez comme suit :
1. Associez votre liste d'accès Web à l'Application Load Balancer.
2. Choisissez un Application Load Balancer comme type de ressource.
3. Ajoutez le nom de la métrique Amazon CloudWatch pour votre liste d'accès Web.
4. Ajoutez les conditions et règles souhaitées à votre liste d'accès Web.
5. Copiez l'ARN AWS WAF à partir de la console AWS WAF ou téléchargez le fichier JSON de la liste ACL Web AWS WAF.
Exemple de sortie d'une liste ACL Web AWS WAF dans JSON :
{ "Name": "", "Id": "ea199076-xxx-xxxx-xxxx-xxxxxxxxxxx", "ARN": "arn:aws:wafv2:us-east-2:<Account_Number>:regional/webacl/deployment/41b495a2-xxxx-xxxx-xxxx-xxxx16619441", "DefaultAction": { "Allow": {} }, "Description": "", "Rules": [], "VisibilityConfig": { "SampledRequestsEnabled": , "CloudWatchMetricsEnabled": , "MetricName": "" }, "Capacity": , "ManagedByFirewallManager": }
Ajouter l'annotation ARN de liste ACL Web AWS WAF à votre entrée ALB
1. Modifiez l'entrée ALB et ajoutez l'annotation alb.ingress.kubernetes.io/wafv2-acl-arn: avec l'ID AWS WAF que vous avez copié précédemment :
kubectl edit ingress/ingress-2048 -n game-2048
Exemple de sortie du manifeste d'entrée :
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/wafv2-acl-arn: arn:aws:wafv2:us-east-2:<Account_Number>:regional/webacl/deployment/41b495a2-xxxx-xxxx-xxxx-xxxx16619441 alb.ingress.kubernetes.io/scheme: internet-facing kubernetes.io/ingress.class: alb labels: app: 2048-ingress name: ingress-2048 namespace: game-2048 spec: rules: - http: paths: - backend: serviceName: service-2048 servicePort: 80 path: /* status: loadBalancer: {}

Contenus pertinents
- demandé il y a 2 moislg...
- demandé il y a un moislg...
- demandé il y a 6 jourslg...
- demandé il y a 4 moislg...
- demandé il y a un moislg...
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 mois