Come posso limitare gli indirizzi IP CIDR per un servizio di tipo LoadBalancer in Amazon EKS?
Voglio limitare gli indirizzi IP CIDR per un servizio di tipo LoadBalancer in Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
Quando crei un servizio di tipo LoadBalancer, le richieste dall'origine 0.0.0.0/0 sono consentite per impostazione predefinita. Se il bilanciatore del carico è in una sottorete pubblica, le richieste vengono indirizzate ai nodi worker da qualsiasi punto di Internet.
Per limitare l'origine invece di 0.0.0.0/0, usa loadBalancerSourceRanges.
Soluzione
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Configurazione dell’ambiente
Per configurare l’ambiente, completa i seguenti passaggi:
- Crea un cluster Amazon EKS.
- Crea e poi avvia i nodi worker.
- Configura kubectl.
- Configura l'interfaccia AWS CLI.
- Configura il controller del bilanciatore del carico AWS.
Nota: per il servizio di tipo LoadBalancer, il conroller del bilanciatore del carico AWS supporta la modalità IP Network Load Balancer (NLB) versione 2.0.0 o successiva e la modalità di istanza NLB 2.2.0 o successiva.
Importante: per assegnare un nuovo Network Load Balancer ai servizi di tipo LoadBalancer, è consigliabile utilizzare il controller del bilanciatore del carico AWS anziché il controller del bilanciatore del carico Kubernetes Service. Per la versione più recente del controller del bilanciatore del carico AWS, consulta aws-load-balancer-controller sul sito Web GitHub.
Limitazione degli indirizzi IP CIDR
Scegli uno dei seguenti metodi per specificare i valori di loadBalancerSourceRanges.
Uso di un'annotazione
Usa un'annotazione nel file manifesto del servizio (svc.yaml).
Esempio di annotazione:
service.beta.kubernetes.io/load-balancer-source-ranges: 143.231.0.0/16
Per ulteriori informazioni, consulta Access control sul sito web di Kubernetes.
Aggiunta del campo loadBalancerSourceRanges
-
Aggiungi il campo .spec.loadBalancerSourceRanges nel file svc.yaml:
apiVersion: v1 kind: Service metadata: labels: app: nginx name: nginx annotations: service.beta.kubernetes.io/aws-load-balancer-type: "external" service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance" service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer loadBalancerSourceRanges: - "143.231.0.0/16"
-
Esegui il comando seguente per applicare il file svc.yaml:
$ kubectl apply -f svc.yaml
Esegui il comando seguente per controllare i log dei pod del controller del bilanciatore del carico AWS:
$ kubectl logs -f <aws load balancer controller pod> -n <namespace>
-
Il controller del bilanciatore del carico AWS aggiunge gli intervalli di origine dei bilanciatori del carico configurati nelle regole in entrata del gruppo di sicurezza. Per confermare che le regole in entrata del gruppo di sicurezza siano state modificate, esegui il seguente comando:
$ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX ... "CidrIp": "143.231.0.0/16" ...
-
Se utilizzi un Network Load Balancer in modalità IP, il campo .spec.loadBalancerSourceRanges viene ignorato per impostazione predefinita. In questo caso, usa la seguente annotazione per attivare la conservazione dell’IP del client:
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
Per un servizio di tipo Network Load Balancer, potrebbe essere necessario aumentare il limite massimo del gruppo di sicurezza. Per ogni porta del nodo e intervallo CIDR della sottorete, il controller crea regole sul gruppo di sicurezza del nodo worker. Per ulteriori informazioni, consulta Ingress traffic sul sito web di Kubernetes.
Nota: per un servizio di tipo Network Load Balancer, potrebbe essere necessario aumentare la quota massima del gruppo di sicurezza. Per ogni porta del nodo e intervallo CIDR della sottorete, il controller crea regole sul gruppo di sicurezza del nodo worker. Ad esempio, sono presenti nodi worker in tre zone di disponibilità. Aggiungi un loadBalancerSourceRange. Nel gruppo di sicurezza del nodo worker vengono create tre regole di controllo dello stato (una per sottorete) e una regola loadBalancerSourceRange. I gruppi di sicurezza hanno un limite predefinito di 60 regole. È possibile aumentare questa quota, ma il numero totale di gruppi di sicurezza per interfaccia di rete non può superare 1.000.
Informazioni correlate
![AWS UFFICIALE](/static/images/aws.png)
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa