Installation AWS Load Balancer Controller avec manifestes - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Installation AWS Load Balancer Controller avec manifestes

Cette rubrique décrit comment installer le contrôleur en le téléchargeant et en l'appliquant Kubernetes manifestes. Vous pouvez consulter la documentation complète du contrôleur sur GitHub.

Dans les étapes suivantes, remplacez example values avec vos propres valeurs.

Prérequis

Avant de commencer ce didacticiel, vous devez installer et configurer les outils et ressources suivants dont vous avez besoin pour créer et gérer un EKS cluster Amazon.

Étape 1 : Configuration IAM

Note

Il vous suffit de créer un rôle pour AWS Load Balancer Controller un par AWS compte. Vérifiez s'AmazonEKSLoadBalancerControllerRoleil existe dans la IAMconsole. Si ce rôle existe, passez à l'étape 2 : Installer cert-manager.

  1. Téléchargez une IAM politique pour AWS Load Balancer Controller qui lui permet de passer des appels AWS APIs en votre nom.

    AWS

    **

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
AWS GovCloud (États-Unis)

**

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_us-gov.json
$ mv iam_policy_us-gov.json iam_policy.json
  1. Créez une IAM politique à l'aide de la stratégie téléchargée à l'étape précédente.

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
    Note

    Si vous consultez la politique dans le AWS Management Console, la console affiche des avertissements pour le ELBservice, mais pas pour le service ELBv2. Cela se produit parce que certaines des actions de la politique existent pour la ELBversion 2, mais pas pour ELB. Vous pouvez ignorer les avertissements relatifs à ELB.

    eksctl
    1. Remplacez my-cluster avec le nom de votre cluster, 111122223333 avec votre identifiant de compte, puis exécutez la commande. Si votre cluster se trouve dans les AWS régions AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest), remplacez-le par arn:aws: . arn:aws-us-gov:

      $ eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve
    AWS CLIet kubectl
    1. Récupérez les OIDC ID du fournisseur et stockez-le dans une variable.

      oidc_id=$(aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
    2. Déterminez si un IAM OIDC le fournisseur avec l'ID de votre cluster est déjà enregistré dans votre compte. Tu as besoin OIDC configuré à la fois pour le cluster etIAM.

      aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

      Si la sortie est renvoyée, alors vous avez déjà un IAM OIDC fournisseur pour votre cluster. Si aucune sortie n'est renvoyée, vous devez créer un IAM OIDC fournisseur pour votre cluster. Pour de plus amples informations, veuillez consulter Créez un IAM OIDC fournisseur pour votre cluster.

    3. Copiez les contenus suivants sur votre appareil. Remplacez 111122223333 avec votre identifiant de compte. Remplacez region-code avec la AWS région dans laquelle se trouve votre cluster. Remplacez EXAMPLED539D4633E53DE1B71EXAMPLE avec le résultat renvoyé à l'étape précédente. Si votre cluster se trouve dans les AWS régions AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest), remplacez-le par arn:aws: . arn:aws-us-gov: Après avoir remplacé le texte, exécutez la commande modifiée pour créer le fichier load-balancer-role-trust-policy.json.

      cat >load-balancer-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-load-balancer-controller" } } } ] } EOF
    4. Créez le IAM rôle.

      aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
    5. Associez la IAM politique EKS gérée par Amazon requise au IAM rôle. Remplacez 111122223333 avec votre identifiant de compte.

      aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name AmazonEKSLoadBalancerControllerRole
    6. Copiez les contenus suivants sur votre appareil. Remplacez 111122223333 avec votre identifiant de compte. Si votre cluster se trouve dans les AWS régions AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest), remplacez-le par arn:aws: . arn:aws-us-gov: Après avoir remplacé le texte, exécutez la commande modifiée pour créer le fichier aws-load-balancer-controller-service-account.yaml.

      cat >aws-load-balancer-controller-service-account.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/AmazonEKSLoadBalancerControllerRole EOF
    7. Créez le Kubernetes compte de service sur votre cluster. Le Kubernetes le nom du compte de service aws-load-balancer-controller est annoté avec le nom du IAM rôle que vous avez créé AmazonEKSLoadBalancerControllerRole.

      $ kubectl apply -f aws-load-balancer-controller-service-account.yaml

Étape 2 : Installation cert-manager

Installez cert-manager en utilisant l'une des méthodes suivantes pour injecter la configuration du certificat dans les webhooks. Pour plus d'informations, consultez Getting Started dans la documentation de cert-manager.

Nous vous recommandons d'utiliser le registre des quay.io conteneurs pour l'installationcert-manager. Si vos nœuds n'ont pas accès au registre des quay.io conteneurs, installez-le à cert-manager l'aide d'Amazon ECR (voir ci-dessous).

Quay.io
  1. Si vos nœuds ont accès au registre de conteneurs quay.io, installez cert-manager pour injecter la configuration du certificat dans les webhooks.

    $ kubectl apply \ --validate=false \ -f https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
Amazon ECR
  1. Installez cert-manager en utilisant l'une des méthodes suivantes pour injecter la configuration du certificat dans les webhooks. Pour plus d'informations, consultez Getting Started dans la documentation de cert-manager.

  2. Téléchargez le manifeste.

    curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
  3. Extrayez les images suivantes et transférez-les vers un référentiel auquel vos nœuds ont accès. Pour plus d'informations sur l'extraction, le balisage et le transfert d'images vers votre propre référentiel, consultez Copier une image de conteneur d'un référentiel vers un autre référentiel.

    quay.io/jetstack/cert-manager-cainjector:v1.13.5 quay.io/jetstack/cert-manager-controller:v1.13.5 quay.io/jetstack/cert-manager-webhook:v1.13.5
  4. Remplacez quay.io dans le manifeste des trois images par votre propre nom de registre. La commande suivante suppose que le nom de votre dépôt privé est le même que celui du dépôt source. Remplacez 111122223333.dkr.ecr.region-code.amazonaws.com avec votre registre privé.

    $ sed -i.bak -e 's|quay.io|111122223333.dkr.ecr.region-code.amazonaws.com|' ./cert-manager.yaml
  5. Appliquez le manifeste.

    $ kubectl apply \ --validate=false \ -f ./cert-manager.yaml

Étape 3 : Installation AWS Load Balancer Controller

  1. Téléchargez la spécification du contrôleur. Pour plus d'informations sur le contrôleur, consultez la documentation sur GitHub.

    curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
  2. Effectuez les modifications suivantes dans le fichier.

    1. Si vous avez téléchargé le fichier v2_7_2_full.yaml, exécutez la commande suivante pour supprimer la section ServiceAccount du manifeste. Si vous ne supprimez pas cette section, l'annotation requise que vous avez apportée au compte de service lors d'une étape précédente est remplacée. La suppression de cette section préserve également le compte de service que vous avez créé à une étape précédente, si vous supprimez le contrôleur.

      $ sed -i.bak -e '612,620d' ./v2_7_2_full.yaml

      Si vous avez téléchargé une version différente du fichier, ouvrez le fichier dans un éditeur et supprimez les lignes suivantes.

      apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
    2. Remplacez your-cluster-name dans la Deployment spec section du fichier par le nom de votre cluster en remplaçant my-cluster avec le nom de votre cluster.

      $ sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_7_2_full.yaml
    3. Si vos nœuds n'ont pas accès aux référentiels ECR d'images EKS Amazon, vous devez extraire l'image suivante et la transférer vers un référentiel auquel vos nœuds ont accès. Pour plus d'informations sur l'extraction, l'identification et le transfert d'une image vers votre propre référentiel, consultez Copier une image de conteneur d'un référentiel vers un autre référentiel.

      public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2

      Ajoutez le nom de votre registre au manifeste. La commande suivante suppose que le nom de votre dépôt privé est le même que celui du dépôt source et ajoute le nom de votre registre privé au fichier. Remplacez 111122223333.dkr.ecr.region-code.amazonaws.com avec votre registre. Cette ligne suppose que vous avez nommé votre référentiel privé de la même manière que le référentiel source. Dans le cas contraire, remplacez le texte eks/aws-load-balancer-controller après votre nom de registre privé par le nom de votre référentiel.

      $ sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|111122223333.dkr.ecr.region-code.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_7_2_full.yaml
    4. (Obligatoire uniquement pour Fargate ou Restricted) IMDS

      Si vous déployez le contrôleur sur des EC2 nœuds Amazon qui ont un accès restreint au service de métadonnées d'EC2instance Amazon (IMDS), ou si vous déployez sur Fargate, ajoutez le point ci-dessous. following parameters - args:

      [...] spec: containers: - args: - --cluster-name=your-cluster-name - --ingress-class=alb - --aws-vpc-id=vpc-xxxxxxxx - --aws-region=region-code [...]
  3. Appliquez le fichier.

    $ kubectl apply -f v2_7_2_full.yaml
  4. Téléchargez l'attaque de l'homme du milieu (HDM) IngressClass et IngressClassParams à votre cluster.

    $ curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
  5. Appliquez le manifeste à votre cluster.

    $ kubectl apply -f v2_7_2_ingclass.yaml

Étape 4 : vérifier que le contrôleur est installé

  1. Vérifiez que le contrôleur est installé.

    $ kubectl get deployment -n kube-system aws-load-balancer-controller

    L'exemple qui suit illustre un résultat.

    NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s

    Vous recevez la sortie précédente si vous avez déployé à l'aide de Helm. Si vous avez effectué un déploiement à l'aide du Kubernetes manifeste, vous n'avez qu'une seule réplique.

  2. Avant d'utiliser le contrôleur pour provisionner AWS des ressources, votre cluster doit répondre à des exigences spécifiques. Pour plus d’informations, consultez Acheminez les applications et HTTP le trafic avec les équilibreurs de charge des applications et Route TCP et UDP trafic avec les équilibreurs de charge réseau.