Installieren Sie den AWS Load Balancer Controller mit Manifesten - Amazon EKS

Hilf mit, diese Seite zu verbessern

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Installieren Sie den AWS Load Balancer Controller mit Manifesten

Tipp

Mit Amazon EKS Auto Mode müssen Sie keine Netzwerk-Add-Ons installieren oder aktualisieren. Der automatische Modus umfasst Pod-Netzwerk- und Lastausgleichsfunktionen.

Weitere Informationen finden Sie unter Automatisieren Sie die Cluster-Infrastruktur mit dem EKS Auto Mode.

In diesem Thema wird beschrieben, wie Sie den Controller installieren, indem Sie Kubernetes-Manifeste herunterladen und anwenden. Sie können die vollständige Dokumentation für den Controller auf GitHub anzeigen.

Ersetzen Sie in den folgenden Schritten das example values durch Ihre eigenen Werte.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Schritte ausführen:

Überlegungen

Bevor Sie mit den Konfigurationsschritten auf dieser Seite fortfahren, sollten Sie Folgendes beachten:

  • Die IAM-Richtlinie und die Rolle (AmazonEKSLoadBalancerControllerRole) können für mehrere EKS-Cluster im selben AWS Konto wiederverwendet werden.

  • Wenn Sie den Controller auf demselben Cluster installieren, in dem die Rolle (AmazonEKSLoadBalancerControllerRole) ursprünglich erstellt wurde, fahren Sie mit Schritt 2: Cert-Manager installieren fort, nachdem Sie überprüft haben, ob die Rolle vorhanden ist.

  • Wenn Sie IAM Roles for Service Accounts (IRSA) verwenden, muss IRSA für jeden Cluster eingerichtet werden, und der OpenID Connect (OIDC) -Anbieter-ARN in der Vertrauensrichtlinie der Rolle ist für jeden EKS-Cluster spezifisch. Wenn Sie den Controller auf einem neuen Cluster mit einem vorhandenen Cluster installierenAmazonEKSLoadBalancerControllerRole, aktualisieren Sie außerdem die Vertrauensrichtlinie der Rolle, sodass sie den OIDC-Anbieter des neuen Clusters einbezieht, und erstellen Sie ein neues Dienstkonto mit der entsprechenden Rollenanmerkung. Informationen darüber, ob Sie bereits einen OIDC-Anbieter haben oder wie Sie einen erstellen können, finden Sie unter. Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster

Schritt 1: IAM konfigurieren

Die folgenden Schritte beziehen sich auf die Release-Version des Load AWS Balancer Controller v2.11.0. Weitere Informationen zu allen Versionen finden Sie auf der Load AWS Balancer Controller-Release-Seite unter GitHub.

  1. Laden Sie eine IAM-Richtlinie für den Load AWS Balancer Controller herunter, mit der er in AWS APIs Ihrem Namen Anrufe tätigen kann.

    AWS
    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json
    AWS GovCloud (US)
    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy_us-gov.json
    mv iam_policy_us-gov.json iam_policy.json
  2. Erstellen Sie eine IAM-Richtlinie mit der im vorherigen Schritt heruntergeladenen Richtlinie.

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

    Wenn Sie sich die Richtlinie in ansehen AWS Management Console, zeigt die Konsole Warnungen für den ELB-Dienst an, aber nicht für den ELB v2-Dienst. Dies liegt daran, dass einige der Maßnahmen in der Richtlinie für ELB v2, aber nicht für ELB gelten. Sie können diese Warnungen für ELB ignorieren.

eksctl
  1. Ersetzen Sie my-cluster durch den Namen Ihres Clusters, 111122223333 durch Ihre Konto-ID und führen Sie dann den Befehl aus.

    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 CLI and kubectl
  1. Rufen Sie die OIDC-Provider-ID Ihres Clusters ab und speichern Sie sie in einer Variablen.

    oidc_id=$(aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
  2. Stellen Sie fest, ob ein IAM-OIDC-Anbieter mit der ID Ihres Clusters bereits in Ihrem Konto vorhanden ist. Sie müssen OIDC sowohl für den Cluster als auch für IAM konfiguriert haben.

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

    Wenn die Ausgabe zurückgegeben wird, haben Sie bereits einen IAM-OIDC-Anbieter für Ihren Cluster. Wenn keine Ausgabe erfolgt, müssen Sie einen IAM-OIDC-Anbieter für Ihr Cluster erstellen. Weitere Informationen finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.

  3. Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Ersetzen Sie es region-code durch die AWS Region, in der sich Ihr Cluster befindet. Ersetzen Sie EXAMPLED539D4633E53DE1B71EXAMPLE mit den im vorherigen Schritt zurückgegebenen Ausgaben.

    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. Erstellen Sie die IAM-Rolle.

    aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
  5. Hängen Sie die erforderliche von Amazon EKS verwaltete IAM-Richtlinie an die IAM-Rolle an. Ersetzen Sie 111122223333 durch Ihre Konto-ID.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name AmazonEKSLoadBalancerControllerRole
  6. Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Nachdem Sie den Text ersetzt haben, führen Sie den geänderten Befehl aus, um die Datei aws-load-balancer-controller-service-account.yaml zu erstellen.

    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. Erstellen Sie das Kubernetes-Servicekonto in Ihrem Cluster. Das angegebene Kubernetes-Dienstkonto aws-load-balancer-controller ist mit der IAM-Rolle versehen, die Sie mit dem Namen erstellt haben. AmazonEKSLoadBalancerControllerRole

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

Schritt 2: Installieren cert-manager

Installieren Sie cert-manager mit einer der beiden folgenden Methoden, um die Zertifikatskonfiguration in die Webhooks einzufügen. Weitere Informationen finden Sie unter Erste Schritte in der cert-manager-Dokumentation.

Wir empfehlen, für die Installation die quay.io Container-Registry zu verwenden. cert-manager Wenn Ihre Knoten keinen Zugriff auf die quay.io Container-Registry haben, installieren Sie die Installation cert-manager mithilfe von Amazon ECR (siehe unten).

Quay.io
  1. Wenn die Knoten Zugriff auf die quay.io-Container-Registry haben, installieren Sie cert-manager, um die Zertifikatskonfiguration in die Webhooks einzufügen.

    kubectl apply \ --validate=false \ -f https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
Amazon ECR
  1. Installieren Sie cert-manager mit einer der beiden folgenden Methoden, um die Zertifikatskonfiguration in die Webhooks einzufügen. Weitere Informationen finden Sie unter Erste Schritte in der cert-manager-Dokumentation.

  2. Laden Sie das Manifest herunter.

    curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
  3. Rufen Sie die folgenden Images ab und verschieben Sie sie in ein Repository, auf das die Knoten Zugriff haben. Weitere Informationen zum Abrufen, Markieren und Verschieben der Images in ein eigenes Repository finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.

    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. Ersetzen Sie quay.io im Manifest für die drei Images durch den Namen Ihrer eigenen Registrierung. Der folgende Befehl geht davon aus, dass der Name Ihres privaten Repositorys mit dem Namen des Quell-Repositorys identisch ist. Ersetzen Sie 111122223333.dkr.ecr.region-code.amazonaws.com durch Ihr privates Register.

    sed -i.bak -e 's|quay.io|111122223333.dkr.ecr.region-code.amazonaws.com|' ./cert-manager.yaml
  5. Das Manifest anwenden.

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

Schritt 3: AWS Load Balancer Controller installieren

  1. Laden Sie die Controller-Spezifikation herunter. Weitere Informationen zum Controller finden Sie in der Dokumentation auf GitHub.

    curl -Lo v2_11_0_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.11.0/v2_11_0_full.yaml
  2. Nehmen Sie die folgenden Änderungen an der Datei vor.

    1. Wenn Sie die Datei v2_11_0_full.yaml heruntergeladen haben, führen Sie den folgenden Befehl aus, um den Abschnitt ServiceAccount im Manifest zu entfernen. Wenn Sie diesen Abschnitt nicht entfernen, wird die erforderliche Anmerkung, die Sie in einem vorherigen Schritt zum Dienstkonto gemacht haben, überschrieben. Außerdem wird durch das Entfernen dieses Abschnitts das in einem vorherigen Schritt erstellte Servicekonto beibehalten, wenn Sie den Controller löschen.

      sed -i.bak -e '690,698d' ./v2_11_0_full.yaml

      Wenn Sie eine andere Dateiversion heruntergeladen haben, öffnen Sie die Datei in einem Editor und entfernen Sie die folgenden Zeilen.

      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. Ersetzen Sie your-cluster-name im Deployment spec-Abschnitt der Datei durch den Namen Ihres Clusters, indem Sie my-cluster durch den Namen Ihres Cluster ersetzen.

      sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_11_0_full.yaml
    3. Wenn Ihre Knoten keinen Zugriff auf die Amazon ECR-Image-Repositorys von Amazon EKS haben, müssen Sie das folgende Bild abrufen und in ein Repository übertragen, auf das Ihre Knoten Zugriff haben. Weitere Informationen zum Abrufen, Markieren und Verschieben von Images in ein eigenes Repository finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.

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

      Fügen Sie den Namen Ihrer Registrierung zum Manifest hinzu. Der folgende Befehl geht davon aus, dass der Name Ihres privaten Repositorys mit dem Namen des Quell-Repositorys übereinstimmt, und fügt der Datei den Namen Ihrer privaten Registrierung hinzu. Ersetzen Sie 111122223333.dkr.ecr.region-code.amazonaws.com durch Ihr Register. In dieser Zeile wird davon ausgegangen, dass Sie Ihr privates Repository genauso benannt haben wie das Quell-Repository. Andernfalls ändern Sie den Text eks/aws-load-balancer-controller nach den Namen Ihrer privaten Registrierung in den Namen Ihres Repositorys.

      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_11_0_full.yaml
    4. (Nur für Fargate oder Restricted IMDS erforderlich)

      Wenn Sie den Controller auf EC2 Amazon-Knoten bereitstellen, die eingeschränkten Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS) haben, oder wenn Sie ihn auf Fargate- oder Amazon EKS-Hybridknoten bereitstellen, fügen Sie das following parameters unter hinzu. - args:

      [...] spec: containers: - args: - --cluster-name=your-cluster-name - --ingress-class=alb - --aws-vpc-id=vpc-xxxxxxxx - --aws-region=region-code [...]
  3. Wenden Sie die Datei an.

    kubectl apply -f v2_11_0_full.yaml
  4. Laden Sie das IngressClass- und IngressClassParams-Manifest in Ihren Cluster herunter.

    curl -Lo v2_11_0_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.11.0/v2_11_0_ingclass.yaml
  5. Wenden Sie das Manifest auf Ihren Cluster an.

    kubectl apply -f v2_11_0_ingclass.yaml

Schritt 4: Stellen Sie sicher, dass der Controller installiert ist

  1. Stellen Sie sicher, dass der Controller installiert ist.

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

    Eine Beispielausgabe sieht wie folgt aus.

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

    Sie erhalten die vorherige Ausgabe, wenn Sie mit Helm bereitgestellt haben. Wenn Sie mit dem Kubernetes-Manifest bereitgestellt haben, haben Sie nur ein Replikat.

  2. Bevor Sie den Controller zur Bereitstellung von AWS Ressourcen verwenden können, muss Ihr Cluster bestimmte Anforderungen erfüllen. Weitere Informationen erhalten Sie unter Weiterleiten von Anwendungs- und HTTP-Verkehr mit Application Load Balancers und Weiterleiten von TCP- und UDP-Verkehr mit Network Load Balancers.