Cluster-Netzwerkrichtlinien erstellen

Auf dieser Seite wird beschrieben, wie Sie Netzwerkrichtlinien in Google Kubernetes Engine (GKE) konfigurieren. Allgemeine Informationen zum GKE-Netzwerk finden Sie in der Netzwerkübersicht.

Übersicht

Sie haben in GKE die Möglichkeit, Netzwerkrichtlinien durchzusetzen, um die Kommunikation zwischen den Pods und Diensten eines Clusters zu steuern. Zum Festlegen einer Netzwerkrichtlinie in GKE können Sie mit der Kubernetes Network Policy API Firewallregeln auf Pod-Ebene erstellen. Diese Firewallregeln bestimmen, welche Pods und Dienste in einem Cluster aufeinander zugreifen können.

Mithilfe von Netzwerkrichtlinien können Sie unter anderem gestaffelte Sicherheitsebenen aktivieren, wenn auf dem Cluster eine Anwendung mit mehreren Ebenen bereitgestellt wird. Beispielsweise lässt sich mit einer Netzwerkrichtlinie verhindern, dass ein manipulierter Front-End-Dienst in einer Anwendung direkt mit einem mehrere Ebenen tieferen Abrechnungs- oder Buchhaltungsdienst kommuniziert.

Netzwerkrichtlinien können außerdem das gleichzeitige Hosten von Daten mehrerer Nutzer in einer Anwendung vereinfachen. Sie können beispielsweise eine sichere Mehrmandantenfähigkeit bereitstellen, indem Sie ein Mandanten-pro-Namespace-Modell festlegen. In diesem Modell können Regeln von Netzwerkrichtlinien dafür sorgen, dass Pods und Dienste in einem bestimmten Namespace nicht auf andere Pods oder Dienste in einem anderen Namespace zugreifen können.

Vorbereitung

Führen Sie zur Vorbereitung auf diese Aufgabe folgende Schritte aus:

  • Achten Sie darauf, dass die Google Kubernetes Engine API aktiviert ist.
  • Google Kubernetes Engine API aktivieren
  • Prüfen Sie, ob das Cloud SDK installiert ist.
  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project [PROJECT_ID]
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Computing-Standardzone fest:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Computing-Standardregion fest:
    gcloud config set compute/region [COMPUTE_REGION]
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update

Durchsetzung von Netzwerkrichtlinien verwenden

Sie können die Durchsetzung von Netzwerkrichtlinien über das gcloud-Befehlszeilentool, die GKE REST API oder die Google Cloud Console aktivieren oder deaktivieren.

Sobald Sie die Funktion im Cluster aktiviert haben, können Sie mithilfe der Kubernetes Network Policy API eine Netzwerkrichtlinie erstellen.

Sie haben sowohl beim Erstellen eines GKE-Clusters als auch bei einem bereits vorhandenen Cluster die Möglichkeit, Netzwerkrichtlinien durchzusetzen. Außerdem können Sie Netzwerkrichtlinien für vorhandene Cluster deaktivieren.

Hinweis: Wenn Sie Netzwerkrichtlinien für einen vorhandenen Cluster aktivieren oder deaktivieren, muss GKE alle Knotenpools Ihres Clusters wiederherstellen, um sicherzustellen, dass die Knoten für die Ausführung des Netzwerkrichtlinienprozesses konfiguriert sind.

Durchsetzung von Netzwerkrichtlinien aktivieren

gcloud

Wenn Sie die Durchsetzung von Netzwerkrichtlinien beim Erstellen eines neuen Clusters mit dem gcloud-Befehlszeilentool aktivieren möchten, führen Sie den Befehl gcloud container clusters create mit dem Flag --enable-network-policy aus:

gcloud container clusters create [CLUSTER_NAME] --enable-network-policy

Die Aktivierung der Durchsetzung von Netzwerkrichtlinien für einen vorhandenen Cluster mit dem gcloud-Befehlszeilentool erfolgt in zwei Schritten. Führen Sie zuerst den Befehl gcloud container clusters update mit dem Flag --update-addons aus:

gcloud container clusters update [CLUSTER_NAME] --update-addons=NetworkPolicy=ENABLED

Führen Sie anschließend den Befehl gcloud container clusters update mit dem Flag --enable-network-policy aus. Durch die Ausführung dieses Befehls werden die Knotenpools des Clusters mit aktivierter Netzwerkrichtlinie neu erstellt:

gcloud container clusters update [CLUSTER_NAME] --enable-network-policy

Console

Führen Sie zum Aktivieren der Durchsetzung von Netzwerkrichtlinien beim Erstellen eines neuen Clusters folgende Schritte aus:

  1. Rufen Sie in der Cloud Console das Google Kubernetes Engine-Menü auf.

    Google Kubernetes Engine-Menü aufrufen

  2. Klicken Sie auf Cluster erstellen.

  3. Konfigurieren Sie den Cluster wie gewünscht.

  4. Klicken Sie auf Erweiterte Optionen. Wählen Sie im Abschnitt "Netzwerk" die Option Netzwerkrichtlinie aktivieren aus.

  5. Klicken Sie auf Erstellen.

Führen Sie zum Aktivieren der Durchsetzung von Netzwerkrichtlinien für einen vorhandenen Cluster folgende Schritte aus:

  1. Rufen Sie in der Cloud Console das Google Kubernetes Engine-Menü auf.

    Google Kubernetes Engine-Menü aufrufen

  2. Klicken Sie auf den Cluster, für den Sie die Netzwerkrichtlinie durchsetzen möchten.

  3. Klicken Sie neben einem Stiftsymbol auf Bearbeiten.

  4. Wählen Sie im Drop-down-Menü Netzwerkrichtlinie für Master die Option Aktiviert aus.

  5. Klicken Sie auf Speichern und dann noch einmal auf Bearbeiten, sobald der Cluster aktualisiert wurde.

  6. Wählen Sie im Drop-down-Menü Netzwerkrichtlinie für Knoten die Option Aktiviert aus.

  7. Klicken Sie auf Speichern.

API

Zum Aktivieren der Netzwerkrichtlinie mit der GKE API geben Sie das Objekt networkPolicy im Objekt cluster an, das Sie für projects.zones.clusters.create oder projects.zones.clusters.update bereitstellen.

Das networkPolicy-Objekt erfordert eine Aufzählung, in der angegeben wird, welcher Netzwerkrichtlinienanbieter verwendet werden soll, und einen booleschen Wert, der angibt, ob die Netzwerkrichtlinie aktiviert wird. Wenn Sie die Netzwerkrichtlinie aktivieren, aber keinen Anbieter festlegen, geben die Befehle create und update einen Fehler zurück. Der einzige gültige Anbieterwert lautet derzeit CALICO.

Durchsetzung von Netzwerkrichtlinien deaktivieren

gcloud

Führen Sie den Befehl gcloud container clusters update mit dem Flag --no-enable-network-policy aus, um die Durchsetzung der Netzwerkrichtlinien für einen vorhandenen Cluster mit dem gcloud-Befehlszeilentool zu deaktivieren.

gcloud container clusters update [CLUSTER_NAME] --no-enable-network-policy

Console

  1. Rufen Sie in der Cloud Console das Google Kubernetes Engine-Menü auf.

    Google Kubernetes Engine-Menü aufrufen

  2. Klicken Sie auf die Schaltfläche "Bearbeiten" (Stiftsymbol) des Clusters.

  3. Wählen Sie im Drop-down-Menü Netzwerkrichtlinie für Knoten die Option Deaktiviert aus.

  4. Klicken Sie auf Speichern. Klicken Sie dann noch einmal auf Bearbeiten.

  5. Wählen Sie im Drop-down-Menü Netzwerkrichtlinie für Master die Option Deaktiviert aus.

  6. Klicken Sie auf Speichern.

API

Geben Sie das Objekt networkPolicy im Objekt cluster für projects.zones.clusters.update an, um die Durchsetzung der Netzwerkrichtlinien für einen vorhandenen Cluster mithilfe der GKE API zu deaktivieren. Stellen Sie im Objekt networkPolicy den booleschen Wert enabled auf false ein.

Netzwerkrichtlinien erstellen

Wenn Sie die Durchsetzung von Netzwerkrichtlinien für einen Cluster aktiviert haben, müssen Sie noch eine Netzwerkrichtlinie festlegen. Dafür verwenden Sie die Kubernetes Network Policy API.

Weitere Informationen zum Erstellen einer Netzwerkrichtlinie finden Sie in den folgenden Themen in der Kubernetes-Dokumentation:

Mit PodSecurityPolicy arbeiten

Wenn Sie eine NetworkPolicy verwenden und einen Pod haben, für den eine PodSecurityPolicy gilt, erstellen Sie eine RBAC Role oder ClusterRole, die zur Verwendung der PodSecurityPolicy berechtigt ist. Binden Sie dann die Role oder ClusterRole an das Dienstkonto des Pods. Wenn Sie NetworkPolicy und PodSecurityPolicy gemeinsam verwenden, ist das Erteilen von Berechtigungen für Nutzerkonten nicht ausreichend. Sie müssen die Rolle an das Dienstkonto binden. Weitere Informationen finden Sie unter Richtlinien autorisieren.

Netzwerkrichtlinien vorübergehend überschreiben

Sie können die Durchsetzung von Netzwerkrichtlinien auf einem Cluster bei Problemen und unter außergewöhnlichen Umständen vorübergehend deaktivieren. Weitere Informationen zum Deaktivieren der Calico-Richtlinie finden Sie in der Dokumentation von Tigera.

Overhead, Beschränkungen und Vorbehalte

  • Für die Durchsetzung von Netzwerkrichtlinien sind auf den Clusterknoten zusätzliche Ressourcen erforderlich. Insbesondere erhöht sich der Speicherbedarf des Prozesses "kube-system" um etwa 128 MB. Außerdem sind etwa 300 Millicore CPU nötig.
  • Zur Durchsetzung von Netzwerkrichtlinien müssen Ihre Knoten neu erstellt werden. Wenn es für den Cluster ein aktives Wartungsfenster gibt, werden die Knoten erst innerhalb des nächsten Wartungsfensters automatisch neu erstellt. Sie können den Cluster jedoch jederzeit manuell aktualisieren.

Beschränkungen und Anforderungen

  • Der Cluster muss mindestens 2 Knoten vom Typ n1-standard-1 oder höher haben. Der kleinste empfohlene Cluster zum Ausführen der Durchsetzung von Netzwerkrichtlinien besteht aus drei Instanzen vom Typ n1-standard-1.
  • Die Durchsetzung von Netzwerkrichtlinien wird nicht für Cluster mit Knoten der Instanzen f1-micro oder g1-small unterstützt, da die Ressourcenanforderungen für Instanzen dieser Größe zu hoch sind.

Weitere Informationen zu Knotenmaschinentypen und zuweisbaren Ressourcen finden Sie unter Clusterarchitektur – Knoten.

Mit HTTP(S)-Load-Balancer-Systemdiagnosen arbeiten

Wenn ein Ingress auf einen Dienst angewendet wird, um einen HTTP(S)-Load-Balancer zu erstellen, muss die auf die Pods hinter diesem Dienst angewendete Netzwerkrichtlinie auch die jeweiligen IP-Prüfungsbereiche für den HTTP(S)-Load-Balancer zulassen.

Außerdem leiten die Knotenports für einen Dienst ggf. Verbindungen zu Pods auf anderen Knoten weiter, sofern dies nicht verhindert wird, indem in der Dienstdefinition "externalTrafficPolicy" auf "Local" gesetzt wird. Wenn externalTrafficPolicy nicht auf Local gesetzt ist, muss die Netzwerkrichtlinie auch Verbindungen von anderen Knoten-IP-Adressen im Cluster zulassen.

Beachten Sie, dass die Ausführungen in diesem Dokument nicht gelten, wenn Containernatives Load-Balancing mit Netzwerk-Endpunktgruppen verwendet wird.

Weitere Informationen