Richtlinien für mehrere Netzwerke einrichten

Auf dieser Seite wird erläutert, wie Sie die Netzwerksicherheit und die Trafficsteuerung in Ihrem Cluster verbessern können, indem Sie Richtlinien für mehrere Netzwerke konfigurieren, die sich speziell auf ein bestimmtes Pod-Netzwerk beziehen. Diese Netzwerkrichtlinien für mehrere Netzwerke steuern den Traffic mithilfe von Firewallregeln auf Pod-Ebene und den Trafficfluss zwischen Pods und Services.

Informationen zur Funktionsweise von Netzwerkrichtlinien für mehrere Netzwerke finden Sie unter Funktionsweise von Netzwerkrichtlinien mit Pod-Netzwerken.

Voraussetzungen

Wenn Sie Netzwerkrichtlinien für mehrere Netzwerke verwenden möchten, müssen Sie die folgenden Anforderungen erfüllen:

  • Google Cloud CLI ab Version 459
  • Sie benötigen einen GKE-Cluster, auf dem eine der folgenden Versionen ausgeführt wird:
    • 1.28.5-gke.1293000 oder höher
    • 1.29.0-gke.1484000 oder höher
  • Ihr Cluster muss GKE Dataplane V2 verwenden.

Beschränkungen

FQDN-Netzwerkrichtlinie und CiliumClusterWide-Netzwerkrichtlinie werden nicht unterstützt: Wenn Sie eine FQDN-Netzwerkrichtlinie und eine CiliumClusterWide-Netzwerkrichtlinie auf einem Pod verwenden, der mit mehreren Netzwerken verbunden ist, wirken sich die Richtlinien auf alle Verbindungen des Pods aus, auch auf Verbindungen, auf die die Richtlinien nicht angewendet werden.

Richtlinien für mehrere Netzwerke konfigurieren

So verwenden Sie Netzwerkrichtlinien für mehrere Netzwerke:

  1. Erstellen Sie einen Cluster mit GKE mit mehreren Netzwerken .
  2. Erstellen Sie einen Knotenpool und ein Pod-Netzwerk.
  3. Verweisen Sie auf das Pod-Netzwerk.
  4. Erstellen Sie eine Netzwerkrichtlinie, die erzwungen werden soll und auf dasselbe Pod-Netzwerk verweist, das von der Arbeitslast verwendet wird.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl gcloud components update ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.

Netzwerkrichtlinie erstellen

  1. Wenn Sie eine Netzwerkrichtlinie erstellen möchten, mit der Regeln für dasselbe Pod-Netzwerk wie für Ihre Arbeitslast erzwungen werden, verweisen Sie in der Definition der Netzwerkrichtlinie auf das entsprechende Pod-Netzwerk.

  2. Wenn Sie die ausgewählten Ingress-Traffic-Regeln und Ziel-Pods anhand von Labels oder anderen Selektoren definieren möchten, erstellen Sie eine Standard-NetworkPolicy.

    Speichern Sie das folgende Beispielmanifest als sample-ingress-network-policy1.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation for network selection
    spec:
      podSelector:
        matchLabels:
          app: test-app-2  # Selects pods with the label "app: test-app-2"
      policyTypes:
      - Ingress  # Specifies the policy applies only to incoming traffic
      ingress:
      - from:  # Allow incoming traffic only from...
        - podSelector:
            matchLabels:
              app: test-app-1  # ...pods with the label "app: test-app-1"
    
  3. Wenden Sie das sample-ingress-network-policy1.yaml-Manifest an:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Wenn Sie die ausgewählten Regeln für ausgehenden Traffic und Ziel-Pods anhand von Labels oder anderen Selektoren definieren möchten, erstellen Sie eine Standard-Netzwerkrichtlinie.

    Speichern Sie das folgende Beispielmanifest als sample-egress-network-policy2.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy-2
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation (optional)
    spec:
      podSelector:
        matchLabels:
          app: test-app-2
      policyTypes:
        - Egress  # Only applies to outgoing traffic
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app: test-app-3
    
  5. Wenden Sie das sample-egress-network-policy2.yaml-Manifest an:

    kubectl apply -f sample-egress-network-policy2.yaml
    

Fehlerbehebung bei Richtlinien für mehrere Netzwerke

Wenn Probleme mit Netzwerkrichtlinien auftreten, unabhängig davon, ob sie auf bestimmte Pod-Netzwerke angewendet werden oder nicht, können Sie das Problem mit den folgenden Befehlen diagnostizieren und beheben:

  1. kubectl get networkpolicy: Listet alle Netzwerkrichtlinienobjekte und Informationen zu ihnen auf.
  2. iptables-save: Ruft alle IP-Adresstabellenketten für einen bestimmten Knoten ab und listet sie auf. Sie müssen diesen Befehl auf dem Knoten als Root ausführen.
  3. cilium bpf policy get <endpoint-id>: Ruft zulässige IP-Adressen aus der Richtlinienzuordnung jedes Endpunkts ab und listet sie auf.
  4. cilium policy selectors: Gibt die Identitäten und die zugehörigen Richtlinien aus, in denen sie ausgewählt wurden.
  5. cilium identity list: zeigt Zuordnungen von Identität zu IP-Adresse.

Nächste Schritte