Einschränkung externer IP-Adressen, die Services zugewiesen werden können - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Einschränkung externer IP-Adressen, die Services zugewiesen werden können

Kubernetes-Services können von innerhalb eines Clusters aus erreicht werden durch:

  • Eine Cluster-IP-Adresse, die automatisch von Kubernetes zugewiesen wird

  • Jede IP-Adresse, die Sie für die externalIPs-Eigenschaft in einer Service-Spezifikation festlegen. Externe IP-Adressen werden nicht von Kubernetes verwaltet und liegen in der Verantwortung des Cluster-Administrators. Externe IP-Adressen, die mit externalIPs festgelegt sind, unterscheiden sich von der externen IP-Adresse, die einem Service vom Typ LoadBalancer von einem Cloud-Anbieter zugewiesen ist.

Für weitere Informationen über Kubernetes Service, siehe Service in der Kubernetes-Dokumentation. Sie können die IP-Adressen einschränken, die für externalIPs in einer Service-Spezifikation festgelegt werden können.

  1. Stellen Sie cert-manager bereit, um Webhook-Zertifikate zu verwalten. Weitere Informationen dazu finden Sie in der cert-manager-Dokumentation.

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
  2. Überprüfen Sie, ob die cert-manager-Pods ausgeführt werden.

    kubectl get pods -n cert-manager

    Eine Beispielausgabe sieht wie folgt aus.

    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
  3. Überprüfen Sie Ihre vorhandenen Services, um sicherzustellen, dass keiner von ihnen externe IP-Adressen zugewiesen sind, die nicht in dem CIDR-Block enthalten sind, auf den Sie Adressen beschränken möchten.

    kubectl get services -A

    Eine Beispielausgabe sieht wie folgt aus.

    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

    Wenn es sich bei einem der Werte um IP-Adressen handelt, die sich nicht innerhalb des Blocks befinden, auf den Sie den Zugriff einschränken möchten, müssen Sie die Adressen so ändern, dass sie sich innerhalb des Blocks befinden, und die Services erneut bereitstellen. Zum Beispiel, der my-service-Service in der vorherigen Ausgabe hat eine externe IP-Adresse zugewiesen, die sich nicht innerhalb des CIDR-Blockbeispiels in Schritt 5 befindet.

  4. Laden Sie das externe IP-Webhook-Verzeichnis herunter. Sie können auch den Quellcode für Webhook auf GitHub ansehen.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
  5. CIDR-Blöcke angeben. Öffnen Sie die heruntergeladene Datei in Ihrem Editor und entfernen Sie \# beim Start der folgenden Zeilen.

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

    Ersetzen Sie 10.0.0.0/8 mit Ihrem eigenen CIDR-Block. Sie können so viele Blöcke wie gewünscht festlegen. Wenn Sie mehrere Blöcke angeben, fügen Sie ein Komma zwischen Blöcken hinzu.

  6. Wenn sich Ihr Cluster nicht in der Region us-west-2 AWS befindet, ersetzen Sie us-west-2, 602401143452 und amazonaws.com in der Datei durch die folgenden Befehle. Ersetzen Sie vor dem Ausführen der Befehle region-code und 111122223333 durch den Wert für Ihre AWS-Region aus der Liste in Amazon-Container-Image-Registrierungen für Amazon-EKS-Add-Ons anzeigen.

    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
  7. Wenden Sie das Manifest auf Ihren Cluster an.

    kubectl apply -f externalip-webhook.yaml

    Ein Versuch, einen Service auf Ihrem Cluster mit einer IP-Adresse bereitzustellen, die für externalIPs festgelegt ist, die nicht in den Blöcken enthalten ist, die Sie im Schritt CIDR-Blöcke angeben angegeben haben, schlägt fehl.