Come posso limitare gli indirizzi IP CIDR per un servizio di tipo LoadBalancer in Amazon EKS?

2 minuti di lettura
0

Voglio limitare gli indirizzi IP CIDR per un servizio di tipo LoadBalancer in Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

Quando viene creato un servizio type:LoadBalancer, le richieste dall'origine 0.0.0.0/0 sono consentite per impostazione predefinita. Se il load balancer si trova in una sottorete pubblica, le richieste vengono indirizzate ai nodi worker da qualsiasi punto di Internet.

Risoluzione

Nota: In caso di errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia AWS CLI.

Configura il tuo ambiente

1.    Crea un cluster Amazon EKS.

2.    Crea e lancia i nodi worker.

3.    Configura kubectl.

4.    Configura l'interfaccia AWS CLI.

5.    Configura AWS Load Balancer Controller.

Nota: AWS Load Balancer Controller supporta le seguenti versioni di AWS Network Load Balancer per servizi di tipo LoadBalancer: modalità indirizzo IP NLB (versione 2.0.0 o successiva) e modalità istanza NLB (2.2.0 o superiore)

Importante: È consigliabile utilizzare AWS Load Balancer Controller quando si esegue il provisioning di un nuovo Network Load Balancer per servizi di tipo LoadBalancer. Usa AWS Load Balancer Controller anziché il controller del sistema di bilanciamento del carico del servizio nell’albero Kubernetes.

Limita gli indirizzi IP CIDR

1.    Nel file manifesto del servizio (svc.yaml), aggiungi il campo .spec.loadBalancerSourceRanges. Ad esempio:

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"

2.    Per applicare il file manifesto, esegui il seguente comando:

$ kubectl apply -f svc.yaml

3.    Per confermare che le regole in entrata sul gruppo di sicurezza siano state modificate, esegui il seguente comando AWS CLI:

$ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
...
    "CidrIp": "143.231.0.0/16"
...

Infine, considera quanto segue:

Utilizzando la modalità indirizzo IP NLB, il campo .spec.loadBalancerSourceRanges viene ignorato per impostazione predefinita. In questo caso, utilizza la seguente annotazione:

service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true

Questa annotazione consente la conservazione dell'indirizzo IP client.

Per un servizio di tipo Network Load Balancer, considera 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.


Informazioni correlate

Autenticazione del cluster

Servizio Kubernetes

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa