

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.

# Migrieren Sie NGINX Ingress Controller, wenn Sie den Amazon EKS Auto Mode aktivieren
<a name="migrate-nginx-ingress-controller-eks-auto-mode"></a>

*Olawale Olaleye und Shamanth Devagari, Amazon Web Services*

## Zusammenfassung
<a name="migrate-nginx-ingress-controller-eks-auto-mode-summary"></a>

[Der automatische EKS-Modus](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) für Amazon Elastic Kubernetes Service (Amazon EKS) kann den Betriebsaufwand für die Ausführung Ihrer Workloads auf Kubernetes-Clustern reduzieren. In diesem Modus können Sie auch AWS die Infrastruktur in Ihrem Namen einrichten und verwalten. Wenn Sie den EKS-Automatikmodus auf einem vorhandenen Cluster aktivieren, müssen Sie die Migration der [NGINX Ingress](https://docs.nginx.com/nginx-ingress-controller/overview/about/) Controller-Konfigurationen sorgfältig planen. Dies liegt daran, dass die direkte Übertragung von Network Load Balancers nicht möglich ist.

Sie können eine blue/green Bereitstellungsstrategie verwenden, um eine NGINX Ingress Controller-Instance zu migrieren, wenn Sie den EKS-Automatikmodus in einem vorhandenen Amazon EKS-Cluster aktivieren.

## Voraussetzungen und Einschränkungen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Ein [Amazon EKS-Cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), auf dem Kubernetes Version 1.29 oder höher ausgeführt wird
+ Amazon EKS-Add-Ons mit [Mindestversionen](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html#auto-addons-required)
+ Aktuelle Version von [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html#kubectl-install-update)
+ Eine bestehende [NGINX](https://kubernetes.github.io/ingress-nginx/deploy/#aws) Ingress Controller-Instanz
+ (Optional) Eine [gehostete Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) in Amazon Route 53 für DNS-basierte Verkehrsverlagerung

## Architektur
<a name="migrate-nginx-ingress-controller-eks-auto-mode-architecture"></a>

Eine *blaue/grüne Bereitstellung ist eine Bereitstellungsstrategie*, bei der Sie zwei separate, aber identische Umgebungen erstellen. Blue/green Bereitstellungen bieten Release-und Rollback-Funktionen nahezu ohne Ausfallzeiten. Die Grundidee besteht darin, den Datenverkehr zwischen zwei identischen Umgebungen zu verlagern, in denen unterschiedliche Versionen Ihrer Anwendung ausgeführt werden.

Die folgende Abbildung zeigt die Migration von Network Load Balancers von zwei verschiedenen NGINX Ingress Controller-Instanzen, wenn der EKS-Automatikmodus aktiviert wird. Sie verwenden eine blue/green Bereitstellung, um den Verkehr zwischen den beiden Network Load Balancers zu verlagern.

![Verwenden einer blue/green Bereitstellungsstrategie zur Migration von NGINX Ingress Controller-Instanzen.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/57e8c14f-cb50-4027-8ef6-ce8ea3f2db25/images/211a029a-90d8-4c92-8200-19e54062f936.png)


*Der ursprüngliche Namespace ist der blaue Namespace.* Hier werden der ursprüngliche NGINX Ingress Controller-Dienst und die ursprüngliche Instanz ausgeführt, bevor Sie den EKS Auto Mode aktivieren. Der ursprüngliche Dienst und die ursprüngliche Instanz stellen eine Verbindung zu einem Network Load Balancer her, dessen DNS-Name in Route 53 konfiguriert ist. Der [Load AWS Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.11/) hat diesen Network Load Balancer in der Ziel-Virtual Private Cloud (VPC) bereitgestellt.

Das Diagramm zeigt den folgenden Workflow zum Einrichten einer Umgebung für eine Bereitstellung: blue/green 

1. *Installieren und konfigurieren Sie eine weitere NGINX Ingress Controller-Instanz in einem anderen Namespace, einem grünen Namespace.*

1. Konfigurieren Sie in Route 53 einen DNS-Namen für einen neuen Network Load Balancer.

## Tools
<a name="migrate-nginx-ingress-controller-eks-auto-mode-tools"></a>

**AWS-Services**
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [Helm](https://helm.sh/) ist ein Open-Source-Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.
+ Der [NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/overview/about/) verbindet Kubernetes-Apps und -Dienste mit Anforderungsbearbeitung, Authentifizierung, benutzerdefinierten Self-Service-Ressourcen und Debugging.

## Epen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-epics"></a>

### Überprüfen Sie die bestehende Umgebung
<a name="review-the-existing-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Vergewissern Sie sich, dass die ursprüngliche NGINX Ingress Controller-Instanz betriebsbereit ist. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die Ressourcen im `ingress-nginx` Namespace betriebsbereit sind. Wenn Sie den NGINX Ingress Controller in einem anderen Namespace bereitgestellt haben, aktualisieren Sie den Namespace-Namen in diesem Befehl.<pre>kubectl get all -n ingress-nginx</pre><br />Vergewissern Sie sich in der Ausgabe, dass sich die NGINX Ingress Controller-Pods im laufenden Zustand befinden. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                                           READY   STATUS      RESTARTS      AGE<br />pod/ingress-nginx-admission-create-xqn9d       0/1     Completed   0             88m<br />pod/ingress-nginx-admission-patch-lhk4j        0/1     Completed   1             88m<br />pod/ingress-nginx-controller-68f68f859-xrz74   1/1     Running     2 (10m ago)   72m<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.67.255    k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com   80:30330/TCP,443:31462/TCP   88m<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.201.176   <none>                                                                          443/TCP                      88m<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           88m<br /><br />NAME                                                 DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-68f68f859   1         1         1       72m<br />replicaset.apps/ingress-nginx-controller-d8c96cf68   0         0         0       88m<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         88m<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         88m</pre> | DevOps Ingenieur | 

### Stellen Sie einen HTTPd Beispiel-Workload bereit, um den NGINX Ingress Controller zu verwenden
<a name="deploy-a-sample-httpd-workload-to-use-the-nginx-ingress-controller"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Kubernetes-Ressourcen. | Geben Sie die folgenden Befehle ein, um ein Beispiel für eine Kubernetes-Bereitstellung, einen Service und einen Ingress zu erstellen:<pre>kubectl create deployment demo --image=httpd --port=80</pre><pre>kubectl expose deployment demo</pre><pre> kubectl create ingress demo --class=nginx \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps Ingenieur | 
| Überprüfen Sie die eingesetzten Ressourcen. | Geben Sie den folgenden Befehl ein, um eine Liste der bereitgestellten Ressourcen anzuzeigen:<pre>kubectl get all,ingress</pre><br />Vergewissern Sie sich in der Ausgabe, dass sich der HTTPd Beispiel-Pod im laufenden Zustand befindet. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                        READY   STATUS    RESTARTS   AGE<br />pod/demo-7d94f8cb4f-q68wc   1/1     Running   0          59m<br /><br />NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE<br />service/demo         ClusterIP   10.100.78.155   <none>        80/TCP    59m<br />service/kubernetes   ClusterIP   10.100.0.1      <none>        443/TCP   117m<br /><br />NAME                   READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/demo   1/1     1            1           59m<br /><br />NAME                              DESIRED   CURRENT   READY   AGE<br />replicaset.apps/demo-7d94f8cb4f   1         1         1       59m<br /><br />NAME                             CLASS   HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />ingress.networking.k8s.io/demo   nginx   nginxautomode.local.dev                k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                 80      56m</pre> | DevOps Ingenieur | 
| Bestätigen Sie, dass der Dienst erreichbar ist. | Geben Sie den folgenden Befehl ein, um zu bestätigen, dass der Dienst über den DNS-Namen des Network Load Balancer erreichbar ist:<pre>curl -H "Host: nginxautomode.local.dev" http://k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com</pre><br />Folgendes ist die erwartete Ausgabe:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps Ingenieur | 
| (Optional) Erstellen Sie einen DNS-Eintrag. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps Ingenieur, AWS DevOps | 

### Aktivieren Sie den automatischen EKS-Modus auf dem vorhandenen Cluster
<a name="enable-eks-auto-mode-on-the-existing-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie den EKS-Automatikmodus. | Folgen Sie den Anweisungen unter [Aktivieren des automatischen EKS-Modus auf einem vorhandenen Cluster](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (Amazon EKS-Dokumentation). | AWS DevOps | 

### Installieren Sie einen neuen NGINX Ingress Controller
<a name="install-a-new-nginx-ingress-controller"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie eine neue NGINX Ingress Controller-Instanz. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps Ingenieur | 
| Stellen Sie die neue NGINX Instance Controller-Instanz bereit. | Geben Sie den folgenden Befehl ein, um die geänderte Manifestdatei anzuwenden:<pre>kubectl apply -f deploy.yaml</pre> | DevOps Ingenieur | 
| Bestätigen Sie die erfolgreiche Bereitstellung. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die Ressourcen im `ingress-nginx-v2` Namespace betriebsbereit sind:<pre>kubectl get all -n ingress-nginx-v2</pre><br />Vergewissern Sie sich in der Ausgabe, dass sich die NGINX Ingress Controller-Pods im laufenden Zustand befinden. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                                            READY   STATUS      RESTARTS   AGE<br />pod/ingress-nginx-admission-create-7shrj        0/1     Completed   0          24s<br />pod/ingress-nginx-admission-patch-vkxr5         0/1     Completed   1          24s<br />pod/ingress-nginx-controller-757bfcbc6d-4fw52   1/1     Running     0          24s<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.208.114   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com   80:31469/TCP,443:30658/TCP   24s<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.150.114   <none>                                                                          443/TCP                      24s<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           24s<br /><br />NAME                                                  DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-757bfcbc6d   1         1         1       24s<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         24s<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         24s</pre> | DevOps Ingenieur | 
| Erstellen Sie einen neuen Ingress für den HTTPd Beispiel-Workload. | Geben Sie den folgenden Befehl ein, um einen neuen Ingress für den vorhandenen HTTPd Beispiel-Workload zu erstellen:<pre>kubectl create ingress demo-new --class=nginx-v2 \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps Ingenieur | 
| Vergewissern Sie sich, dass der neue Ingress funktioniert. | Geben Sie den folgenden Befehl ein, um zu bestätigen, dass der neue Eingang funktioniert:<pre>curl -H "Host: nginxautomode.local.dev" k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com</pre><br />Das Folgende ist die erwartete Ausgabe:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps Ingenieur | 

### Überschneiden
<a name="cut-over"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Wechseln Sie zum neuen Namespace. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | AWS DevOps, DevOps Ingenieur | 
| Überprüfe die beiden Eingänge. | Geben Sie den folgenden Befehl ein, um die beiden Ingresses zu überprüfen, die für den HTTPd Beispiel-Workload erstellt wurden:<pre>kubectl get ingress</pre><br />Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME       CLASS      HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />demo       nginx      nginxautomode.local.dev   k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                              80      95m<br />demo-new   nginx-v2   nginxautomode.local.dev   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com                80      33s</pre> | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-resources"></a>
+ [Aktivieren Sie den automatischen EKS-Modus auf einem vorhandenen Cluster](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (Amazon EKS-Dokumentation)
+ [Fehlerbehebung bei Load Balancers, die vom Kubernetes Service Controller in Amazon EKS erstellt wurden](https://repost.aws/knowledge-center/eks-load-balancers-troubleshooting) (AWS re:POST Knowledge Center)
+ NGINX Ingress Controller ([NGINX-Dokumentation](https://docs.nginx.com/nginx-ingress-controller/))