

 **Contribuisci a migliorare questa pagina** 

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à.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

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à.

# Limitazione degli indirizzi IP esterni assegnabili ai servizi
<a name="restrict-service-external-ip"></a>

I servizi Kubernetes possono essere raggiunti dall'interno di un cluster tramite:
+ Un indirizzo IP del cluster assegnato automaticamente da Kubernetes
+ Qualsiasi indirizzo IP specificato per la proprietà `externalIPs` in una specifica di servizio. Gli indirizzi IP esterni non sono gestiti da Kubernetes e sono responsabilità dell'amministratore del cluster. Gli Indirizzi IP esterni specificati con `externalIPs` sono diversi dall'indirizzo IP esterno assegnato a un servizio di tipo `LoadBalancer` da un provider cloud.

Per ulteriori informazioni sui servizi Kubernetes, consultare [Servizio](https://kubernetes.io/docs/concepts/services-networking/service/) nella documentazione Kubernetes. È possibile limitare gli indirizzi IP che possono essere specificati per `externalIPs` in una specifica di servizio.

1. Implementazione di `cert-manager` per gestire i certificati webhook. Per ulteriori informazioni, consultare la documentazione [Cert-Manager](https://cert-manager.io/docs/).

   ```
   kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
   ```

1. Verifica che i pod `cert-manager` siano in esecuzione.

   ```
   kubectl get pods -n cert-manager
   ```

   Di seguito viene riportato un output di esempio:

   ```
   NAME                                       READY   STATUS    RESTARTS   AGE
   cert-manager-58c8844bb8-nlx7q              1/1     Running   0          15s
   cert-manager-cainjector-745768f6ff-696h5   1/1     Running   0          15s
   cert-manager-webhook-67cc76975b-4v4nk      1/1     Running   0          14s
   ```

1. Esamina i servizi esistenti per assicurarsi che a nessuno di essi siano assegnati indirizzi IP esterni non contenuti nell’intervallo CIDR per cui si desidera limitare gli indirizzi.

   ```
   kubectl get services -A
   ```

   Di seguito viene riportato un output di esempio:

   ```
   NAMESPACE                      NAME                                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)         AGE
   cert-manager                   cert-manager                            ClusterIP      10.100.102.137   <none>          9402/TCP        20m
   cert-manager                   cert-manager-webhook                    ClusterIP      10.100.6.136     <none>          443/TCP         20m
   default                        kubernetes                              ClusterIP      10.100.0.1       <none>          443/TCP         2d1h
   externalip-validation-system   externalip-validation-webhook-service   ClusterIP      10.100.234.179   <none>          443/TCP         16s
   kube-system                    kube-dns                                ClusterIP      10.100.0.10      <none>          53/UDP,53/TCP   2d1h
   my-namespace                   my-service                              ClusterIP      10.100.128.10    192.168.1.1     80/TCP          149m
   ```

   Se uno qualsiasi dei valori costituiscono indirizzi IP che non si trovano all’interno del blocco per cui si desidera limitare l’accesso, sarà necessario modificare gli indirizzi in modo che si trovino all’interno del blocco e implementare nuovamente i servizi. Ad esempio, al servizio `my-service` nell’output precedente è assegnato un indirizzo IP esterno che non rientra nell’intervallo CIDR esemplificativo del passaggio 5.

1. Eseguire il download del manifesto del webhook IP esterno. È anche possibile visualizzare il [codice sorgente per il webhook](https://github.com/kubernetes-sigs/externalip-webhook) su GitHub.

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
   ```

1. Specifica i blocchi CIDR. Aprire il file scaricato nell'editor e rimuovere il `\#` all'inizio delle righe seguenti.

   ```
   #args:
   #- --allowed-external-ip-cidrs=10.0.0.0/8
   ```

   Sostituire `10.0.0.0/8` con il proprio blocco CIDR. É possibile specificare tutti i blocchi che si desiderano. Se si specificano blocchi multipli, aggiungere una virgola tra i blocchi.

1. Se il cluster non è nella regione AWS `us-west-2`, sostituisci `us-west-2`, `602401143452` e `amazonaws.com` nel file con i seguenti comandi. Prima di eseguire i comandi, sostituisci {{codice regione}} e {{111122223333}} con il valore per la tua regione AWS dall’elenco in [Visualizza i registri delle immagini dei container Amazon per i componenti aggiuntivi Amazon EKS](add-ons-images.md).

   ```
   sed -i.bak -e 's|602401143452|111122223333|' externalip-webhook.yaml
   sed -i.bak -e 's|us-west-2|region-code|' externalip-webhook.yaml
   sed -i.bak -e 's|amazonaws.com||' externalip-webhook.yaml
   ```

1. Applica il manifesto al cluster.

   ```
   kubectl apply -f externalip-webhook.yaml
   ```

   Qualsiasi tentativo di implementare un servizio nel cluster con un indirizzo IP specificato per `externalIPs` che non è contenuto nei blocchi specificati nella fase Specifica i blocchi CIDR avrà esito negativo.