Wie schränke ich CIDR-IP-Adressen für einen Dienst vom Typ LoadBalancer in Amazon EKS ein?

Lesedauer: 2 Minute
0

Ich möchte die CIDR-IP-Adressen für einen Dienst vom Typ LoadBalancer in Amazon Elastic Kubernetes Service (Amazon EKS) einschränken.

Kurzbeschreibung

Wenn Sie einen Dienst type:LoadBalancer erstellen, sind Anfragen von der Quelle 0.0.0.0/0 standardmäßig zulässig. Wenn sich der Load Balancer in einem öffentlichen Subnetz befindet, werden Anfragen von überall im Internet an Worker-Knoten weitergeleitet.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, vergewissern Sie sich, dass Sie die neueste AWS CLI-Version verwenden.

Umgebung einrichten

1.    Erstellen Sie einen Amazon EKS-Cluster.

2.    Erstellen und starten Sie Worker-Knoten.

3.    Richten Sie kubectl ein.

4.    Richten Sie die AWS-CLI ein.

5.    Stellen Sie den AWS Load Balancer Controller ein.

Hinweis: Der AWS Load Balancer-Controller unterstützt die folgenden Versionen des AWS Network Load Balancers für Dienste des Typs LoadBalancer: NLB-IP-Modus (Version 2.0.0 oder höher) und NLB-Instance-Modus (2.2.0 oder höher)

Wichtig: Es hat sich bewährt, den AWS Load Balancer-Controller zu verwenden, wenn Sie einen neuen Network Load Balancer für Dienste vom Typ LoadBalancer bereitstellen. Verwenden Sie den AWS Load Balancer-Controller anstelle des Load Balancer-Controllers des Kubernetes In-Tree-Dienstes.

CIDR-IP-Adressen einschränken

1.    Fügen Sie der Dienst-Manifestdatei (svc.yaml) das Feld .spec.loadBalancerSourceRanges hinzu. Zum Beispiel:

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.    Führen Sie den folgenden Befehl aus, um die Manifestdatei anzuwenden:

$ kubectl apply -f svc.yaml

3.    Führen Sie den folgenden AWS-CLI-Befehl aus, um zu bestätigen, dass die eingehenden Regeln für die Sicherheitsgruppe geändert wurden:

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

Beachten Sie abschließend Folgendes:

Wenn Sie den NLB-IP-Modus verwenden, wird das Feld .spec.loadBalancerSourceRanges standardmäßig ignoriert. Verwenden Sie in diesem Fall die folgende Anmerkung:

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

Diese Anmerkung ermöglicht die Beibehaltung der Client-IP.

Wir empfehlen bei einem Dienst mit einem Network Load Balancer-Typ die maximale Sicherheitsgruppengrenze. Für jeden Knotenport und jeden Subnetz-CIDR-Bereich erstellt der Controller Regeln für die Sicherheitsgruppe des Worker-Knotens.


Relevante Informationen

Cluster-Authentifizierung

Kubernetes Service

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren