So konfigurieren Sie externe Deny-Service-IPs in Kubernetes

So Konfigurieren Sie Externe Deny Service Ips In Kubernetes



Sie können beim Einrichten eines Kubernetes-Clusters auf ein Problem stoßen, wenn Sie nur wissen, wie Sie NodePort verwenden, um Ihren Kubernetes-Dienst über das Internet zugänglich zu machen. Bei Verwendung des Diensttyps NodePort wird eine hohe Portnummer zugewiesen und Sie müssen Verbindungen zu diesen Ports in Ihrer Firewall-Regel zulassen. Besonders wenn der Server über das offene Internet erreichbar ist, schadet das Ihrer Infrastruktur. Sie können als Cluster-Administrator einen Block von IP-Adressen außerhalb des Clusters zuweisen, der dort Datenverkehr an Dienste übertragen kann. Genau darüber werden wir in diesem Artikel sprechen: um alle wichtigen Informationen zur Konfiguration von externen Deny-Service-IPs in Kubernetes zu finden.

Was ist ein externer IP-Dienst?

Einer der Dienstendpunkte empfängt Datenverkehr, der über die externe IP (als Ziel-IP) und den Dienstport in den Cluster eintritt. Kubernetes ist nicht für die Verwaltung externer IP-Adressen verantwortlich.







In dieser Situation ist es entscheidend sicherzustellen, welche IP für den Zugriff auf den Kubernetes-Cluster verwendet wird. Unter Verwendung des externen IP-Diensttyps können wir den Dienst an die IP-Adresse binden, die für den Zugriff auf den Cluster verwendet wird.



Die Tatsache, dass das Kubernetes-Netzwerk mit dem Overlay-Netzwerk interagiert, ist wichtig, um diese Situation zu verstehen. Dies bedeutet, dass Sie auf praktisch jeden Knoten im Cluster zugreifen können, sobald Sie einen der Knoten (Master- oder Worker-Knoten) erreichen.



Das Netzwerk wird so dargestellt:






Beide Knoten 1 und 2 im Diagramm teilen sich eine einzige IP-Adresse. Der echte Pod lebt auf Knoten 1, aber die IP-Adresse 1.2.3.6 ist an den Nginx-Dienst auf Knoten 1 gebunden. Die IP-Adresse von Knoten 1, 1.2.3.4, ist an den httpd-Dienst gebunden, und der eigentliche Pod von Knoten 2 befindet sich dort.

Möglich wird dies durch die Grundlagen des Overlay-Netzwerks. Wenn wir die IP-Adresse 1.2.3.4 kräuseln, sollte der httpd-Dienst antworten; Wenn wir 1.2.3.5 curlen, sollte der Nginx-Dienst antworten.



Vor- und Nachteile externer IP

Hier sind die Vor- und Nachteile externer IP:

Es ist vorteilhaft, eine externe IP zu verwenden, weil:

    • Ihre IP ist vollständig unter Ihrer Kontrolle. Anstatt die ASN des Cloud-Anbieters zu verwenden, können Sie IP verwenden, die zu Ihrer eigenen ASN gehört.

Zu den Nachteilen externer IP zählen die folgenden:

    • Das einfache Setup, das wir jetzt durchgehen werden, ist NICHT sehr leicht verfügbar. Dies bedeutet, dass der Dienst nicht mehr verfügbar ist, wenn der Knoten ausfällt, und Sie das Problem manuell beheben müssen.
    • Um die IPs zu handhaben, ist beträchtliche menschliche Arbeit erforderlich. Da die IPs nicht dynamisch für Sie vergeben werden, müssen Sie dies manuell tun.

Was ist das standardmäßige Verweigern/Zulassen-Verhalten?

Die ' Standardmäßig zulassen gibt an, dass der gesamte Datenverkehr standardmäßig zugelassen ist. Sofern nicht ausdrücklich erlaubt, wird der gesamte Datenverkehr standardmäßig abgelehnt, wenn der Begriff „ Standard verweigern .“ außer wenn eine Netzwerkrichtlinie angegeben ist.

    • Der gesamte Datenverkehr zu und von einem Pod ist zulässig, wenn für diesen Pod keine Netzwerkrichtlinien gelten.
    • Wenn für einen Pod vom Typ Ingress eine oder mehrere Netzwerkrichtlinien in Kraft sind, ist nur der von diesen Richtlinien ausdrücklich zugelassene Ingress-Datenverkehr zulässig.
    • Wenn eine oder mehrere Netzwerkrichtlinien für einen Pod des Typs Egress gelten, ist nur der von diesen Richtlinien zugelassene ausgehende Datenverkehr zulässig.

Die Standardeinstellung für andere Endpunkttypen (VMs, Hostschnittstellen) ist das Blockieren des Datenverkehrs. Nur Datenverkehr, der ausdrücklich durch die Netzwerkrichtlinie zugelassen ist, ist zulässig, selbst wenn keine Netzwerkrichtlinien für den Endpunkt gelten.

Best Practice: Implizite Standardverweigerungsrichtlinie

Sie müssen eine implizite standardmäßige Verweigerungsrichtlinie konfigurieren, die für Ihre Kubernetes-Pods erstellt wurde. Dadurch wird sichergestellt, dass unerwünschter Datenverkehr automatisch blockiert wird. Denken Sie daran, dass implizite Standardverweigerungsrichtlinien immer zuletzt in Kraft treten; Wenn andere Richtlinien den Datenverkehr zulassen, gilt die Verweigerung nicht. Die Verweigerung wird erst implementiert, nachdem alle anderen Richtlinien berücksichtigt wurden.

Wie erstelle ich eine standardmäßige Ablehnungsrichtlinie für Kubernetes-Pods?

Wir empfehlen, die globale Netzwerkrichtlinie zu verwenden, auch wenn eine der folgenden Regeln verwendet werden kann, um eine standardmäßige Verweigerungsrichtlinie für Kubernetes-Pods zu erstellen. Eine globale Netzwerkrichtlinie wird auf alle Workloads (VMs und Container) über alle Namespaces und Hosts hinweg angewendet. Eine globale Netzwerkrichtlinie fördert einen vorsichtigen Sicherheitsansatz bei gleichzeitiger Verteidigung der Ressourcen.

    • Aktivieren Sie die Standardeinstellung, um die globale Netzwerkrichtlinie ohne Namensraum zu verweigern
    • Aktivieren Sie die Standardeinstellung, um die Netzwerkrichtlinie mit Namespace zu verweigern
    • Aktivieren Sie die Standardeinstellung, um die Kubernetes-Richtlinie mit Namespace zu verweigern

Was ist IP-Blockierung?

Damit werden bestimmte IP-CIDR-Bereiche ausgewählt, die als Eingangsquellen oder Ausgangsziele zugelassen werden sollen. Da Pod-IPs vorübergehend und unvorhersehbar sind, sollten dies clusterexterne IPs sein.

Die Quell- oder Ziel-IP von Paketen muss häufig neu geschrieben werden, wenn Cluster-Eingangs- und Ausgangsmethoden verwendet werden. Je nach verwendetem Netzwerk-Plug-in (Cloud-Dienstanbieter, Dienstimplementierung usw.) kann sich das Verhalten ändern.

Dies gilt für Ingress und bedeutet, dass Sie in einigen Fällen eingehende Pakete filtern müssen, die auf der tatsächlichen Quell-IP basieren. Andererseits kann die „Quell-IP“, auf der die NetworkPolicy arbeitet, die IP eines LoadBalancers oder sogar des Knotens des Pods usw. sein.

Dies zeigt, dass Verbindungen zwischen Pods und Dienst-IPs, die in Cluster-externe IPs umgeschrieben werden, möglicherweise ipBlock-basierten Beschränkungen in Bezug auf den Ausgang unterliegen.

Was sind die Standardrichtlinien?

Der gesamte ein- und ausgehende Datenverkehr zu und von Pods in einem Namespace ist standardmäßig zulässig, wenn für diesen Namespace keine Kontrollen vorhanden sind. Sie können das Standardverhalten des Namespace mithilfe der folgenden Beispiele ändern.

Standardmäßig allen eingehenden Datenverkehr verweigern

Wenn Sie eine Netzwerkrichtlinie erstellen, die alle Pods auswählt, aber keinen eingehenden Datenverkehr zu diesen Pods einschließt, können Sie eine „Standard“-Ingress-Isolationsrichtlinie erstellen, und zwar für einen Namespace.


Dadurch wird sichergestellt, dass alle Pods, unabhängig davon, ob eine andere Netzwerkrichtlinie sie auswählt, für eingehenden Datenverkehr isoliert sind. Diese Regel gilt nicht für die Isolation zum Verlassen eines Pods.

Standardmäßig allen ausgehenden Datenverkehr verweigern

Wenn Sie eine Netzwerkrichtlinie erstellen, die alle Pods auswählt, aber ausgehenden Datenverkehr von diesen Pods verbietet, können Sie eine „Standard“-Egress-Isolationsrichtlinie erstellen, die auch für einen Namespace gilt.

Fazit

In diesem Leitfaden drehte sich alles um die Verwendung von DenyServiceExternalIPs. Wir haben auch eine schematische Darstellung entworfen, damit unsere Benutzer verstehen, dass es funktioniert. Wir haben auch Beispielkonfigurationen bereitgestellt.