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 mitexternalIPsfestgelegt sind, unterscheiden sich von der externen IP-Adresse, die einem Service vom TypLoadBalancervon einem Cloud-Anbieter zugewiesen ist.
Für weitere Informationen über Kubernetes Service, siehe ServiceexternalIPs in einer Service-Spezifikation festgelegt werden können.
-
Stellen Sie
cert-managerbereit, 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 -
Überprüfen Sie, ob die
cert-manager-Pods ausgeführt werden.kubectl get pods -n cert-managerEine 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 -
Ü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 -AEine 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 149mWenn 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. -
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 -
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/8Ersetzen Sie
10.0.0.0/8mit 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. -
Wenn sich Ihr Cluster nicht in der Region
us-west-2AWS befindet, ersetzen Sieus-west-2,602401143452undamazonaws.comin der Datei durch die folgenden Befehle. Ersetzen Sie vor dem Ausführen der Befehleregion-codeund111122223333durch 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 -
Wenden Sie das Manifest auf Ihren Cluster an.
kubectl apply -f externalip-webhook.yamlEin Versuch, einen Service auf Ihrem Cluster mit einer IP-Adresse bereitzustellen, die für
externalIPsfestgelegt ist, die nicht in den Blöcken enthalten ist, die Sie im Schritt CIDR-Blöcke angeben angegeben haben, schlägt fehl.