

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esegui la migrazione dei controller di ingresso NGINX quando abiliti la modalità automatica di Amazon EKS
<a name="migrate-nginx-ingress-controller-eks-auto-mode"></a>

*Olawale Olaleye e Shamanth Devagari, Amazon Web Services*

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

[La modalità automatica EKS](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) per Amazon Elastic Kubernetes Service (Amazon EKS) può ridurre il sovraccarico operativo legato all'esecuzione dei carichi di lavoro sui cluster Kubernetes. Questa modalità consente anche di configurare e gestire AWS l'infrastruttura per tuo conto. Quando abiliti la modalità automatica EKS su un cluster esistente, devi pianificare attentamente la migrazione delle configurazioni di [NGINX Ingress](https://docs.nginx.com/nginx-ingress-controller/overview/about/) Controller. Questo perché il trasferimento diretto dei Network Load Balancer non è possibile.

Puoi utilizzare una strategia di blue/green distribuzione per migrare un'istanza di NGINX Ingress Controller quando abiliti EKS Auto Mode in un cluster Amazon EKS esistente.

## Prerequisiti e limitazioni
<a name="migrate-nginx-ingress-controller-eks-auto-mode-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Un [cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) che esegue Kubernetes versione 1.29 o successiva
+ Componenti aggiuntivi Amazon EKS con versioni [minime](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html#auto-addons-required)
+ [Ultima versione di kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html#kubectl-install-update)
+ Un'istanza esistente di [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/deploy/#aws)
+ (Facoltativo) Una [zona ospitata](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) in Amazon Route 53 per lo spostamento del traffico basato su DNS

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

Una *distribuzione blu/verde* è una strategia di distribuzione in cui si creano due ambienti separati ma identici. Blue/green le implementazioni offrono funzionalità di downtime, release e rollback quasi nulle. L'idea fondamentale è spostare il traffico tra due ambienti identici che eseguono versioni diverse dell'applicazione.

L'immagine seguente mostra la migrazione dei Network Load Balancer da due diverse istanze di NGINX Ingress Controller quando si abilita la modalità automatica EKS. Si utilizza una blue/green distribuzione per spostare il traffico tra i due Network Load Balancer.

![Utilizzo di una strategia di blue/green implementazione per migrare le istanze di NGINX Ingress Controller.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/57e8c14f-cb50-4027-8ef6-ce8ea3f2db25/images/211a029a-90d8-4c92-8200-19e54062f936.png)


*Lo spazio dei nomi originale è lo spazio dei nomi blu.* È qui che vengono eseguiti il servizio e l'istanza originali di NGINX Ingress Controller, prima di abilitare la modalità automatica EKS. Il servizio e l'istanza originali si connettono a un Network Load Balancer con un nome DNS configurato in Route 53. Il [AWS Load Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.11/) ha distribuito questo Network Load Balancer nel cloud privato virtuale (VPC) di destinazione.

Il diagramma mostra il seguente flusso di lavoro per configurare un ambiente per una distribuzione: blue/green 

1. *Installa e configura un'altra istanza di NGINX Ingress Controller in un namespace diverso, uno spazio dei nomi verde.*

1. In Route 53, configura un nome DNS per un nuovo Network Load Balancer.

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

**Servizi AWS**
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuisce il traffico di applicazioni o di rete in entrata su più destinazioni. Ad esempio, puoi distribuire il traffico tra istanze Amazon Elastic Compute Cloud (Amazon EC2), contenitori e indirizzi IP in una o più zone di disponibilità.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) è un servizio Web DNS altamente scalabile e disponibile.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS.

**Altri strumenti**
+ [Helm](https://helm.sh/) è un gestore di pacchetti open source per Kubernetes che ti aiuta a installare e gestire le applicazioni sul tuo cluster Kubernetes.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) è un'interfaccia a riga di comando che consente di eseguire comandi sui cluster Kubernetes.
+ [NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/overview/about/) collega le app e i servizi Kubernetes con la gestione delle richieste, l'autenticazione, le risorse personalizzate self-service e il debug.

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

### Esamina l'ambiente esistente
<a name="review-the-existing-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Verifica che l'istanza originale di NGINX Ingress Controller sia operativa. | Immettete il seguente comando per verificare che le risorse nel `ingress-nginx` namespace siano operative. Se hai distribuito NGINX Ingress Controller in un altro spazio dei nomi, aggiorna il nome dello spazio dei nomi in questo comando.<pre>kubectl get all -n ingress-nginx</pre><br />Nell'output, conferma che i pod di NGINX Ingress Controller siano in esecuzione. Di seguito è riportato un esempio di output:<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 ingegnere | 

### Implementa un HTTPd carico di lavoro di esempio per utilizzare NGINX Ingress Controller
<a name="deploy-a-sample-httpd-workload-to-use-the-nginx-ingress-controller"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea le risorse Kubernetes. | Inserisci i seguenti comandi per creare un esempio di implementazione, servizio e ingresso Kubernetes:<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 ingegnere | 
| Esamina le risorse distribuite. | Immettete il comando seguente per visualizzare un elenco delle risorse distribuite:<pre>kubectl get all,ingress</pre><br />Nell'output, confermate che il HTTPd pod di esempio sia in esecuzione. Di seguito è riportato un esempio di output:<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 ingegnere | 
| Conferma che il servizio è raggiungibile. | Immettere il seguente comando per confermare che il servizio è raggiungibile tramite il nome DNS del Network Load Balancer:<pre>curl -H "Host: nginxautomode.local.dev" http://k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com</pre><br />L'output previsto è il seguente:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps ingegnere | 
| (Facoltativo) Crea un record DNS. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps ingegnere, AWS DevOps | 

### Abilita la modalità EKS Auto sul cluster esistente
<a name="enable-eks-auto-mode-on-the-existing-cluster"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Abilita la modalità automatica EKS. | Segui le istruzioni in [Abilita la modalità automatica EKS su un cluster esistente](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (documentazione Amazon EKS). | AWS DevOps | 

### Installa un nuovo controller di ingresso NGINX
<a name="install-a-new-nginx-ingress-controller"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura una nuova istanza di NGINX Ingress Controller. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps ingegnere | 
| Distribuisci la nuova istanza di NGINX Instance Controller. | Immettete il seguente comando per applicare il file manifest modificato:<pre>kubectl apply -f deploy.yaml</pre> | DevOps ingegnere | 
| Conferma la corretta implementazione. | Immettete il comando seguente per verificare che le risorse nel `ingress-nginx-v2` namespace siano operative:<pre>kubectl get all -n ingress-nginx-v2</pre><br />Nell'output, conferma che i pod di NGINX Ingress Controller siano in esecuzione. Di seguito è riportato un esempio di output:<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 ingegnere | 
| Crea un nuovo ingresso per il carico di HTTPd lavoro di esempio. | Immettete il seguente comando per creare un nuovo ingresso per il carico di lavoro di esempio esistente: HTTPd <pre>kubectl create ingress demo-new --class=nginx-v2 \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps ingegnere | 
| Conferma che il nuovo ingresso funzioni. | Immettete il seguente comando per confermare che il nuovo ingresso funzioni:<pre>curl -H "Host: nginxautomode.local.dev" k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com</pre><br />L'output previsto è il seguente:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps ingegnere | 

### tagliare
<a name="cut-over"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Passa al nuovo namespace. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | AWS DevOps, DevOps ingegnere | 
| Controlla i due ingressi. | Immettete il comando seguente per esaminare i due ingressi creati per il carico di lavoro di esempio HTTPd :<pre>kubectl get ingress</pre><br />Di seguito è riportato un esempio di output:<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 ingegnere | 

## Risorse correlate
<a name="migrate-nginx-ingress-controller-eks-auto-mode-resources"></a>
+ [Abilita la modalità automatica EKS su un cluster esistente](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (documentazione Amazon EKS)
+ [Risolvi i problemi relativi ai sistemi di bilanciamento del carico creati dal controller di servizio Kubernetes in Amazon](https://repost.aws/knowledge-center/eks-load-balancers-troubleshooting) EKS (re:POST Knowledge Center)AWS 
+ [NGINX](https://docs.nginx.com/nginx-ingress-controller/) Ingress Controller (documentazione NGINX)