

 **Unterstützung für die Verbesserung dieser Seite beitragen** 

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.

Um zu diesem Benutzerhandbuch beizutragen, 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.

# Internetverkehr mit AWS Load Balancer Controller weiterleiten
<a name="aws-load-balancer-controller"></a>

**Tipp**  
 [Melden Sie sich](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el) für bevorstehende Amazon EKS-Workshops an.

Der Load AWS Balancer Controller verwaltet AWS Elastic Load Balancers für einen Kubernetes-Cluster. Mit dem Controller können Sie Ihre Cluster-Anwendungen im Internet verfügbar machen. Der Controller stellt AWS Load Balancer bereit, die auf Cluster-Service- oder Ingress-Ressourcen verweisen. Mit anderen Worten: Der Controller erstellt eine einzelne IP-Adresse oder einen DNS-Namen, der auf mehrere Pods in Ihrem Cluster verweist.

![\[Architekturdiagramm. Darstellung des Datenverkehrs von Internetnutzern zu Amazon Load Balancer. Amazon Load Balancer verteilt den Datenverkehr auf die Pods im Cluster.\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/lbc-overview.png)


Der Controller überwacht Kubernetes-Ingress- oder Service-Ressourcen. Als Reaktion darauf erstellt es die entsprechenden AWS Elastic Load Balancing Balancing-Ressourcen. Sie können das spezifische Verhalten der Load Balancer konfigurieren, indem Sie Annotationen zu den Kubernetes-Ressourcen hinzufügen. Sie können beispielsweise mithilfe von Anmerkungen AWS Sicherheitsgruppen an Load Balancer anhängen.

Der Controller stellt die folgenden Ressourcen bereit:

 **Kubernetes `Ingress`**   
Der LBC erstellt einen [AWS Application Load Balancer (ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html), wenn Sie einen Kubernetes-`Ingress` erstellen. [Überprüfen Sie die Annotationen, die Sie auf eine Ingress-Ressource anwenden können.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) 

 **Kubernetes-Service vom Typ `LoadBalancer`**   
Der LBC erstellt einen [AWS Network Load Balancer (NLB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html), wenn Sie einen Kubernetes-Service vom Typ `LoadBalancer` erstellen. [Überprüfen Sie die Annotationen, die Sie auf eine Service-Ressource anwenden können.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)   
In der Vergangenheit wurde der Kubernetes-Netzwerk-Load-Balancer für *Instance*-Ziele verwendet, während der LBC für *IP*-Ziele eingesetzt wurde. Mit der Load AWS Balancer Controller-Version `2.3.0` oder höher können Sie NLBs mit beiden Zieltypen erstellen. Weitere Informationen zu NLB-Zieltypen finden Sie unter [Zieltyp](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-type) im Benutzerhandbuch für Network Load Balancer.

Der Controller ist ein [Open-Source-Projekt](https://github.com/kubernetes-sigs/aws-load-balancer-controller), auf dem verwaltet wird. GitHub

Bevor Sie den Controller bereitstellen, empfehlen wir Ihnen, die Voraussetzungen und Überlegungen in [Weiterleiten von Anwendungen und HTTP-Datenverkehr mit Application Load Balancers](alb-ingress.md) und [Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers](network-load-balancing.md) zu überprüfen. In diesen Themen stellen Sie eine Beispiel-App bereit, die einen AWS Load Balancer enthält.

 **Kubernetes-API `Gateway`**   
Mit der Load AWS Balancer Controller-Version `2.14.0` oder höher erstellt der LBC einen [AWS Application Load Balancer (ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html), wenn Sie ein Kubernetes erstellen. `Gateway` Kubernetes Gateway standardisiert mehr Konfigurationen als Ingress, für das benutzerdefinierte Anmerkungen für viele gängige Optionen erforderlich waren. [Überprüfen Sie die Konfiguration, die Sie auf eine Gateway-Ressource anwenden können.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/gateway/gateway/) Weitere Informationen zur `Gateway` API finden Sie unter [Gateway-API](https://kubernetes.io/docs/concepts/services-networking/gateway/) in der Kubernetes-Dokumentation.

## Installation des Controllers
<a name="lbc-overview"></a>

Sie können eines der folgenden Verfahren verwenden, um den Load AWS Balancer Controller zu installieren:
+ Wenn Sie Amazon EKS noch nicht kennen, empfehlen wir Ihnen, Helm für die Installation zu verwenden, da dies die Installation des Load AWS Balancer Controllers vereinfacht. Weitere Informationen finden Sie unter [Installieren Sie den AWS Load Balancer Controller mit Helm](lbc-helm.md).
+ Für erweiterte Konfigurationen, wie z. B. Cluster mit eingeschränktem Netzwerkzugriff auf öffentliche Container-Registries, verwenden Sie Kubernetes-Manifeste Weitere Informationen finden Sie unter [Installieren Sie den AWS Load Balancer Controller mit Manifesten](lbc-manifest.md).

## Migration von veralteten Controller-Versionen
<a name="lbc-deprecated"></a>
+ Wenn Sie veraltete Versionen des Load AWS Balancer Controllers installiert haben, finden Sie weitere Informationen unter. [Anwendungen vom veralteten ALB Ingress Controller migrieren](lbc-remove.md)
+ Veraltete Versionen können nicht aktualisiert werden. Sie müssen entfernt und eine aktuelle Version des Load AWS Balancer Controllers installiert werden.
+ Zu den veralteten Versionen gehören:
  +  AWS ALB Ingress Controller für Kubernetes („Ingress Controller“), ein Vorgänger des Load Balancer Controllers. AWS 
  + Beliebige `0.1.x ` Version des AWS Load Balancer Controllers

## Veraltete Cloud-Provider
<a name="lbc-legacy"></a>

Kubernetes beinhaltet einen veralteten Cloud-Provider für AWS. Der ältere Cloud-Anbieter ist in der Lage, AWS Load Balancer bereitzustellen, ähnlich wie der AWS Load Balancer Controller. Der veraltete Cloud-Provider erstellt klassische Load Balancer. Wenn Sie den Load AWS Balancer Controller nicht installieren, verwendet Kubernetes standardmäßig den alten Cloud-Anbieter. Sie sollten den Load AWS Balancer Controller installieren und vermeiden, den alten Cloud-Anbieter zu verwenden.

**Wichtig**  
In den Versionen 2.5 und neuer wird der Load AWS Balancer Controller mit dem zum Standardcontroller für *Kubernetes-Dienstressourcen `type: LoadBalancer` und erstellt für jeden Dienst* einen AWS Network Load Balancer (NLB). Dies geschieht durch einen mutierenden Webhook für Services, der das Feld `spec.loadBalancerClass` auf `service.k8s.aws/nlb` für neue Services von `type: LoadBalancer` setzt. Sie können dieses Feature deaktivieren und wieder den [veralteten Cloud Provider](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider) als Standard-Controller verwenden, indem Sie den Wert für den Helm-Chart `enableServiceMutatorWebhook` auf `false` setzen. Der Cluster stellt keine neuen Classic Load Balancer für Ihre Services bereit, es sei denn, Sie schalten dieses Feature aus. Bestehende Classic Load Balancer werden weiterhin funktionieren.

# Installieren Sie den AWS Load Balancer Controller mit Helm
<a name="lbc-helm"></a>

**Tipp**  
 [Melden Sie sich](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el) für bevorstehende Amazon EKS-Workshops an.

**Tipp**  
Mit Amazon EKS Auto Mode ist es nicht erforderlich, Netzwerk-Add-Ons zu installieren oder zu aktualisieren. Der Automatikmodus umfasst Funktionen für Pod-Netzwerke und Load Balancing.  
Weitere Informationen finden Sie unter [Automatisieren der Cluster-Infrastruktur mit dem EKS-Automatikmodus](automode.md).

In diesem Thema wird beschrieben, wie Sie den Load AWS Balancer Controller mit Helm, einem Paketmanager für Kubernetes, und installieren. `eksctl` Der Controller wird mit den Standardoptionen installiert. Weitere Informationen zum Controller, einschließlich Einzelheiten zur Konfiguration mit Anmerkungen, finden Sie in der [Load AWS Balancer Controller-Dokumentation](https://kubernetes-sigs.github.io/aws-load-balancer-controller/) unter. GitHub

Ersetzen Sie in den folgenden Schritten die Beispielwerte durch Ihre eigenen Werte.

## Voraussetzungen
<a name="lbc-prereqs"></a>

Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Schritte ausführen:
+ Erstellen Sie einen Amazon-EKS-Cluster. Informationen zum Erstellen finden Sie unter [Erste Schritte mit Amazon EKS](getting-started.md).
+ Installieren Sie [Helm](https://helm.sh/docs/helm/helm_install/) auf Ihrem lokalen Rechner.
+ Stellen Sie sicher, dass Ihr Amazon-VPC-CNI-Plugin für Kubernetes, `kube-proxy` und CoreDNS-Add-Ons die in den [Servicekonto-Token](service-accounts.md#boundserviceaccounttoken-validated-add-on-versions) aufgeführten Mindestversionen aufweist.
+ Erfahren Sie mehr über die Konzepte von AWS Elastic Load Balancing. Weitere Informationen finden Sie im [Elastic Load Balancing-Benutzerhandbuch](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).
+ Erfahren Sie mehr über den Kubernetes-[Service](https://kubernetes.io/docs/concepts/services-networking/service/) und die [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)-Ressourcen.

### Überlegungen
<a name="lbc-considerations"></a>

Bevor Sie mit den Konfigurationsschritten auf dieser Seite fortfahren, beachten Sie Folgendes:
+ Die IAM-Richtlinie und die Rolle (`AmazonEKSLoadBalancerControllerRole`) können für mehrere EKS-Cluster im selben AWS Konto wiederverwendet werden.
+ Wenn Sie den Controller im selben Cluster installieren, in dem die Rolle (`AmazonEKSLoadBalancerControllerRole`) ursprünglich erstellt wurde, fahren Sie mit [Schritt 2: Installieren des Load Balancer Controllers](#lbc-helm-install) fort, nachdem Sie überprüft haben, ob die Rolle vorhanden ist.
+ Wenn Sie IAM-Rollen für Servicekonten (IRSA) verwenden, muss IRSA für jeden Cluster eingerichtet werden, und die 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 `AmazonEKSLoadBalancerControllerRole` installieren, aktualisieren Sie außerdem die Vertrauensrichtlinie der Rolle, um den OIDC-Anbieter des neuen Clusters einzuschließen, und erstellen Sie ein neues Servicekonto mit der entsprechenden Rollen-Annotation. Informationen zum Feststellen, ob Sie bereits über einen OIDC-Anbieter verfügen oder einen erstellen müssen, finden Sie unter [Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster](enable-iam-roles-for-service-accounts.md).

## Schritt 1: IAM-Rolle mithilfe von `eksctl` erstellen
<a name="lbc-helm-iam"></a>

Die folgenden Schritte beziehen sich auf die Release-Version des Load AWS Balancer Controller **v2.14.1**. Weitere Informationen zu allen Versionen finden Sie auf der [Load AWS Balancer Controller-Release-Seite](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/) 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.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
   ```
   + Wenn es sich bei Ihrer Partition um eine nicht standardmäßige AWS Partition handelt, wie z. B. eine Regierung oder eine Region China, [lesen Sie die Richtlinien auf GitHub](https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/docs/install) und laden Sie die entsprechende Richtlinie für Ihre Region herunter.

1. 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-Managementkonsole, 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.

1. Ersetzen Sie die Werte für den Cluster-Namen, den Regions-Code und die Konto-ID.

   ```
   eksctl create iamserviceaccount \
       --cluster=<cluster-name> \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws: iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region <aws-region-code> \
       --approve
   ```

## Schritt 2: AWS Load Balancer Controller installieren
<a name="lbc-helm-install"></a>

1. Fügen Sie das `eks-charts` Helm-Chart-Repository hinzu. AWS unterhält [dieses Repository](https://github.com/aws/eks-charts) auf GitHub.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Aktualisieren Sie Ihr lokales Repository, um sicherzustellen, dass Sie über die neuesten Charts verfügen.

   ```
   helm repo update eks
   ```

1. Installieren Sie den AWS Load Balancer Controller.

   Wenn Sie den Controller auf EC2 Amazon-Knoten bereitstellen, die [eingeschränkten Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node) haben, oder wenn Sie ihn auf Fargate- oder Amazon EKS-Hybridknoten bereitstellen, fügen Sie dem folgenden `helm` Befehl die folgenden Flags hinzu:
   +  `--set region=region-code ` 
   +  `--set vpcId=vpc-xxxxxxxx ` 

     Ersetzen Sie *my-cluster* mit dem Namen Ihres Clusters. Im folgenden Befehl ist `aws-load-balancer-controller` das Kubernetes-Servicekonto, das Sie in einem vorherigen Schritt erstellt haben.

     Weitere Informationen zur Konfiguration des Helmdiagramms finden Sie unter [values.yaml](https://github.com/aws/eks-charts/blob/master/stable/aws-load-balancer-controller/values.yaml) on. GitHub

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --set clusterName=my-cluster \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller \
       --version 1.14.0
     ```

**Wichtig**  
Das bereitgestellte Diagramm erhält keine automatischen Sicherheitsaktualisierungen. Sie müssen manuell auf ein neueres Diagramm aktualisieren, wenn es verfügbar wird. Wechseln Sie beim Upgrade *install* zum vorherigen `upgrade` Befehl.

Der `helm install` Befehl installiert automatisch die benutzerdefinierten Ressourcendefinitionen (CRDs) für den Controller. Der `helm upgrade`-Befehl installiert dies nicht. Wenn Sie das verwenden`helm upgrade,`, müssen Sie das manuell installieren CRDs. Führen Sie den folgenden Befehl aus, um das zu installieren CRDs:

```
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml
```

## Schritt 3: Überprüfen, ob der Controller installiert ist
<a name="lbc-helm-verify"></a>

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.

1. Bevor Sie den Controller zur Bereitstellung von AWS Ressourcen verwenden können, muss Ihr Cluster bestimmte Anforderungen erfüllen. Weitere Informationen erhalten Sie unter [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md) und [Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers](network-load-balancing.md).

# Installieren Sie den AWS Load Balancer Controller mit Manifesten
<a name="lbc-manifest"></a>

**Tipp**  
Mit Amazon EKS Auto Mode ist es nicht erforderlich, Netzwerk-Add-Ons zu installieren oder zu aktualisieren. Der Automatikmodus umfasst Funktionen für Pod-Netzwerke und Load Balancing.  
Weitere Informationen finden Sie unter [Automatisieren der Cluster-Infrastruktur mit dem EKS-Automatikmodus](automode.md).

In diesem Thema wird beschrieben, wie Sie den Controller durch Herunterladen und Anwenden von Kubernetes-Manifesten installieren. Sie können die vollständige [Dokumentation](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/) für den Controller auf GitHub anzeigen.

Ersetzen Sie in den folgenden Schritten die Beispielwerte durch Ihre eigenen Werte.

## Voraussetzungen
<a name="lbc-manifest-prereqs"></a>

Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Schritte ausführen:
+ Erstellen Sie einen Amazon-EKS-Cluster. Informationen zum Erstellen finden Sie unter [Erste Schritte mit Amazon EKS](getting-started.md).
+ Installieren Sie [Helm](https://helm.sh/docs/helm/helm_install/) auf Ihrem lokalen Rechner.
+ Stellen Sie sicher, dass Ihr Amazon-VPC-CNI-Plugin für Kubernetes, `kube-proxy` und CoreDNS-Add-Ons die in den [Servicekonto-Token](service-accounts.md#boundserviceaccounttoken-validated-add-on-versions) aufgeführten Mindestversionen aufweist.
+ Erfahren Sie mehr über die Konzepte von AWS Elastic Load Balancing. Weitere Informationen finden Sie im [Elastic Load Balancing-Benutzerhandbuch](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).
+ Erfahren Sie mehr über den Kubernetes-[Service](https://kubernetes.io/docs/concepts/services-networking/service/) und die [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)-Ressourcen.

### Überlegungen
<a name="lbc-manifest-considerations"></a>

Bevor Sie mit den Konfigurationsschritten auf dieser Seite fortfahren, beachten Sie Folgendes:
+ 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, auf dem die Rolle (`AmazonEKSLoadBalancerControllerRole`) ursprünglich erstellt wurde, fahren Sie fort mit [Schritt 2: Installation von cert-manager](#lbc-cert) nachdem Sie überprüft haben, dass die Rolle vorhanden ist.
+ Wenn Sie IAM-Rollen für Servicekonten (IRSA) verwenden, muss IRSA für jeden Cluster eingerichtet werden, und die 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 `AmazonEKSLoadBalancerControllerRole` installieren, aktualisieren Sie außerdem die Vertrauensrichtlinie der Rolle, um den OIDC-Anbieter des neuen Clusters einzuschließen, und erstellen Sie ein neues Servicekonto mit der entsprechenden Rollen-Annotation. Informationen zum Feststellen, ob Sie bereits über einen OIDC-Anbieter verfügen oder einen erstellen müssen, finden Sie unter [Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster](enable-iam-roles-for-service-accounts.md).

## Schritt 1: IAM konfigurieren
<a name="lbc-iam"></a>

Die folgenden Schritte beziehen sich auf die Release-Version des Load AWS Balancer Controller **v2.14.1**. Weitere Informationen zu allen Versionen finden Sie auf der [Load AWS Balancer Controller-Release-Seite](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/) 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.  
**Example**  

------
#### [  AWS  ]

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
   ```

------
#### [  AWS GovCloud (US) ]

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_us-gov.json
   ```

   ```
   mv iam_policy_us-gov.json iam_policy.json
   ```

------

1. 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-Managementkonsole, 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.

**Example**  

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
   ```

1. Rufen Sie die OIDC-Anbieter-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)
   ```

1. Stellen Sie fest, ob in Ihrem Konto bereits ein IAM-OIDC-Anbieter mit der ID Ihres Clusters vorhanden ist. Sie müssen OIDC sowohl für den Cluster als auch für IAM konfigurieren.

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

   Wenn eine Ausgabe zurückgegeben wird, verfügen Sie bereits über 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](enable-iam-roles-for-service-accounts.md).

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

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
               },
               "Action": "sts:AssumeRoleWithWebIdentity",
               "Condition": {
                   "StringEquals": {
                       "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                       "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-load-balancer-controller"
                   }
               }
           }
       ]
   }
   ```

1. Erstellen Sie die IAM-Rolle.

   ```
   aws iam create-role \
     --role-name AmazonEKSLoadBalancerControllerRole \
     --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
   ```

1. 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
   ```

1. 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
   ```

1. 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: `cert-manager` installieren
<a name="lbc-cert"></a>

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](https://cert-manager.io/docs/installation/#getting-started) in der *cert-manager-Dokumentation*.

Wir empfehlen die Verwendung der `quay.io`-Container-Registry, um `cert-manager` zu installieren. Sollten Ihre Knoten keinen Zugriff auf die `quay.io`-Container-Registry haben, installieren Sie `cert-manager` mithilfe von Amazon ECR (siehe unten).

**Example**  

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
   ```

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](https://cert-manager.io/docs/installation/#getting-started) in der *cert-manager-Dokumentation*.

1. Laden Sie das Manifest herunter.

   ```
   curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
   ```

1. 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](copy-image-to-repository.md).

   ```
   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
   ```

1. Ersetzen Sie `quay.io` im Manifest für die drei Images durch den Namen Ihrer eigenen Registrierung. Beim folgenden Befehl wird davon ausgegangen, dass der Name Ihres privaten Repositorys mit dem des Quell-Repositorys übereinstimmt. 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
   ```

1. Das Manifest anwenden.

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

## Schritt 3: AWS Load Balancer Controller installieren
<a name="lbc-install"></a>

1. Laden Sie die Controller-Spezifikation herunter. Weitere Informationen zum Controller finden Sie in der [Dokumentation](https://kubernetes-sigs.github.io/aws-load-balancer-controller/) auf GitHub.

   ```
   curl -Lo v2_14_1_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.14.1/v2_14_1_full.yaml
   ```

1. Nehmen Sie die folgenden Änderungen an der Datei vor.

   1. Wenn Sie die Datei `v2_14_1_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 Annotation überschrieben, die Sie in einem vorherigen Schritt für das Servicekonto erstellt haben. 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 '764,772d' ./v2_14_1_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
      ---
      ```

   1. 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_14_1_full.yaml
      ```

   1. Wenn Ihre Knoten keinen Zugriff auf die Amazon-ECR-Image-Repositorys von Amazon EKS haben, müssen Sie das folgende Image abrufen und in ein Repository verschieben, auf das die 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](copy-image-to-repository.md).

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

      Fügen Sie dem Manifest den Namen Ihrer Registry hinzu. Der folgende Befehl geht davon aus, dass der Name Ihres privaten Repositorys mit dem des Quell-Repositorys übereinstimmt, und fügt der Datei den Namen Ihrer privaten Registry 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_14_1_full.yaml
      ```

   1. (Nur für Fargate oder eingeschränktes IMDS erforderlich)

      Wenn Sie den Controller auf EC2 Amazon-Knoten bereitstellen, die [eingeschränkten Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS)](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node) 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
      
      
      [...]
      ```

1. Wenden Sie die Datei an.

   ```
   kubectl apply -f v2_14_1_full.yaml
   ```

1. Laden Sie das `IngressClass`- und `IngressClassParams`-Manifest in Ihren Cluster herunter.

   ```
   curl -Lo v2.14.1_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.14.1/v2_14_1_ingclass.yaml
   ```

1. Wenden Sie das Manifest auf Ihren Cluster an.

   ```
   kubectl apply -f v2_14_1_ingclass.yaml
   ```

## Schritt 4: Überprüfen, ob der Controller installiert ist
<a name="lbc-verify"></a>

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.

1. Bevor Sie den Controller zur Bereitstellung von AWS Ressourcen verwenden können, muss Ihr Cluster bestimmte Anforderungen erfüllen. Weitere Informationen erhalten Sie unter [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md) und [Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers](network-load-balancing.md).

# Anwendungen vom veralteten ALB Ingress Controller migrieren
<a name="lbc-remove"></a>

In diesem Thema wird die Migration von veralteten Controller-Versionen beschrieben. Insbesondere wird beschrieben, wie veraltete Versionen des AWS Load Balancer Controllers entfernt werden.
+ Veraltete Versionen können nicht aktualisiert werden. Sie müssen diese zuerst entfernen und dann eine aktuelle Version installieren.
+ Zu den veralteten Versionen gehören:
  +  AWS ALB Ingress Controller für Kubernetes („Ingress Controller“), ein Vorgänger des Load Balancer Controllers. AWS 
  + Beliebige `0.1.x ` Version des AWS Load Balancer Controllers

## Veraltete Controller-Version entfernen
<a name="lbc-remove-desc"></a>

**Anmerkung**  
Möglicherweise haben Sie die veraltete Version mit Helm oder manuell mit Kubernetes-Manifesten installiert. Führen Sie den Vorgang mit dem Tool aus, mit dem Sie ihn ursprünglich installiert haben.

1. Wenn Sie das `incubator/aws-alb-ingress-controller`-Helm-Chart installiert haben, deinstallieren Sie es.

   ```
   helm delete aws-alb-ingress-controller -n kube-system
   ```

1. Wenn Sie Version `0.1.x ` des `eks-charts/aws-load-balancer-controller`-Charts installiert haben, deinstallieren Sie es. Das Upgrade von `0.1.x ` auf Version `1.0.0` funktioniert nicht, da die Webhook-API-Version inkompatibel ist.

   ```
   helm delete aws-load-balancer-controller -n kube-system
   ```

1. Überprüfen Sie, ob der Controller derzeit installiert ist.

   ```
   kubectl get deployment -n kube-system alb-ingress-controller
   ```

   Dies ist die Ausgabe, falls der Controller nicht installiert ist.

   ```
   Error from server (NotFound): deployments.apps "alb-ingress-controller" not found
   ```

   Dies ist die Ausgabe, falls der Controller installiert ist.

   ```
   NAME                   READY UP-TO-DATE AVAILABLE AGE
   alb-ingress-controller 1/1   1          1         122d
   ```

1. Geben Sie die folgenden Befehle ein, um den Controller zu entfernen.

   ```
   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
   ```

## Zum AWS Load Balancer Controller migrieren
<a name="lbc-migrate"></a>

Um vom ALB Ingress Controller für Kubernetes zum Load AWS Balancer Controller zu migrieren, müssen Sie:

1. Entfernen Sie den ALB Ingress Controller (siehe oben).

1.  [Installieren Sie den AWS Load Balancer Controller.](aws-load-balancer-controller.md#lbc-overview) 

1. Fügen Sie der vom Load AWS Balancer Controller verwendeten IAM-Rolle eine zusätzliche Richtlinie hinzu. Diese Richtlinie ermöglicht es dem LBC, die vom ALB Ingress Controller für Kubernetes erstellten Ressourcen zu verwalten.

1. Laden Sie die IAM-Richtlinie herunter. Diese Richtlinie ermöglicht es dem Load AWS Balancer Controller, Ressourcen zu verwalten, die vom ALB Ingress Controller für Kubernetes erstellt wurden. Sie können auch [die Richtlinie anzeigen](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_v1_to_v2_additional.json).

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_v1_to_v2_additional.json
   ```

1. Wenn sich Ihr Cluster in den Regionen AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet, ersetzen Sie ihn durch. AWS ` arn:aws: ` `arn:aws-us-gov:`

   ```
   sed -i.bak -e 's|arn:aws:|arn:aws-us-gov:|' iam_policy_v1_to_v2_additional.json
   ```

1. Erstellen Sie die IAM-Richtlinie und notieren Sie den zurückgegebenen ARN.

   ```
   aws iam create-policy \
     --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \
     --policy-document file://iam_policy_v1_to_v2_additional.json
   ```

1. Hängen Sie die IAM-Richtlinie an die IAM-Rolle an, die vom AWS Load Balancer Controller verwendet wird. *your-role-name*Ersetzen Sie durch den Namen der Rolle, z. B. `AmazonEKSLoadBalancerControllerRole`

   Wenn Sie die Rolle mit`eksctl`, erstellt haben, öffnen Sie die [AWS CloudFormation Konsole](https://console.aws.amazon.com/cloudformation) und wählen Sie den **eksctl- *my-cluster* - addon-iamserviceaccount-kube-system - aws-load-balancer-controller** Stack aus, um den Rollennamen zu finden, der erstellt wurde. Wählen Sie die Registerkarte für **Resources (Ressourcen)**. Der Rollenname befindet sich in der Spalte **Physische ID**.

   ```
   aws iam attach-role-policy \
     --role-name your-role-name \
     --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy
   ```