Auf dieser Seite wird beschrieben, wie Sie die Zulassungsregeln für VPC-Firewalls deaktivieren, die GKE für LoadBalancer-Dienste erstellt.
Das Deaktivieren dieser automatisch erstellten Firewallregeln für LoadBalancer-Dienste kann in den folgenden Fällen hilfreich sein:
- Wenn Sie mehrere LoadBalancer-Dienste in zwei oder mehr GKE-Clustern haben, kann es effizienter sein, die Firewallregeln selbst zu verwalten. Anstatt dass GKE beispielsweise eine eindeutige Firewallregel für jeden LoadBalancer-Dienst erstellt, können Ihre manuell erstellten Firewallregeln eingehenden Traffic für mehrere LoadBalancer-Dienste zulassen.
- Sie können anstelle von VPC-Firewallregeln hierarchische Firewallrichtlinien, globale Netzwerk-Firewallrichtlinien oder regionale Netzwerk-Firewallrichtlinien verwenden. Die Regeln in diesen Firewallrichtlinien unterstützen zusätzliche Aktionen, flexiblere Ziele und Funktionen wie Standortbestimmung, Threat Intelligence, Adressgruppen und FQDNs.
Wenn Sie automatisch erstellte Firewallregeln für LoadBalancer-Dienste deaktivieren möchten, müssen Sie beim Erstellen oder Aktualisieren eines Clusters das Flag --disable-l4-lb-firewall-reconciliation
angeben. Das Flag --disable-l4-lb-firewall-reconciliation
wirkt sich nicht auf andere automatisch erstellte VPC-Firewallregeln aus, z. B. auf solche, die die Kommunikation zwischen Knoten ermöglichen oder die Systemdiagnosen für Ihre Dienste zulassen.
Voraussetzungen
- Wenn Sie benutzerverwaltete Firewallregeln für LoadBalancer-Dienste verwenden möchten, müssen Ihre GKE-Cluster die Version 1.31.3-gke.105600 oder höher verwenden.
Beschränkungen
In GKE können Sie das automatische Erstellen von Firewallregeln für die folgenden Arten von LoadBalancer-Diensten deaktivieren:
- Interne LoadBalancer-Dienste mit GKE-Teileinstellung
- Backend-Dienst-basierte externe LoadBalancer-Dienste
Das automatische Erstellen von Firewallregeln kann für folgende LoadBalancer-Diensttypen nicht deaktiviert werden:
- Interne LoadBalancer-Dienste, für die die GKE-Teilmengeneinstellung nicht verwendet wird
- Zielpoolbasierte externe LoadBalancer-Dienste
Hinweis
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 diese Aufgabe 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
gcloud components update
ab.
Strategien für die manuelle Verwaltung von Firewallregeln
Bevor Sie das automatische Erstellen von VPC-Firewallregeln für LoadBalancer-Dienste in Ihrem GKE-Cluster deaktivieren, sollten Sie mit einem Sicherheitsadministrator eine Strategie zur manuellen Konfiguration von Firewallregeln entwickeln.
Legen Sie fest, welche Art von Firewallrichtlinie verwendet werden soll: eine hierarchische Firewallrichtlinie, eine globale Netzwerk-Firewallrichtlinie oder eine regionale Netzwerk-Firewallrichtlinie. Eine Anleitung zum Erstellen einer Firewallrichtlinie finden Sie unter:
- Hierarchische Firewallrichtlinien und -regeln verwenden
- Globale Netzwerkrichtlinien und -regeln verwenden
- Regionale Netzwerk-Firewallrichtlinien und -regeln verwenden
Sie können auch VPC-Firewallregeln verwenden, für die keine Richtlinie verwendet wird.
Ihre manuell erstellten Firewallregeln müssen Regeln für den eingehenden Traffic sein, da die implizierte Firewallregel zum Ablehnen von eingehendem Traffic eingehenden Traffic unterbindet. Wenn Sie das automatische Erstellen von VPC-Firewallregeln deaktiviert haben, erreicht eingehender Traffic Ihre Knoten nur, wenn Sie Firewallregeln zum Zulassen von eingehendem Traffic erstellt haben, die mit dem Traffic für Ihre LoadBalancer-Dienste übereinstimmen.
Je nach den Parametern der Firewallregel kann eine einzelne Firewallregel zum Zulassen von eingehendem Traffic auf einen oder mehrere Load Balancer-Dienste angewendet werden. Definieren Sie für jede von Ihnen erstellte Firewallregel zum Zulassen von eingehendem Traffic die folgenden Parameter:
Zielparameter: Die Firewallregel muss mindestens alle Knoten des Clusters enthalten, der die LoadBalancer-Dienste enthält. Welche Ziele unterstützt werden, hängt davon ab, in welcher Art von Firewallrichtlinie sich eine Regel befindet oder ob Sie eine VPC-Firewallregel verwenden. Informationen zum Zielparameter einer Regel in einer Firewallrichtlinie finden Sie unter Ziele.
Protokolle und Ports: Geben Sie alle Protokolle und Zielports an, die von den LoadBalancer-Diensten verwendet werden, auf die die Firewallregel angewendet werden soll.
Zielparameter: Sie können eine der folgenden Strategien für den Zielparameter verwenden:
- Geben Sie im Zielparameter die IP-Adressen aller LoadBalancer-Dienste an, auf die die Firewallregel angewendet werden soll. Verwenden Sie den folgenden Befehl, um die IP-Adresse eines LoadBalancer-Dienstes zu ermitteln:
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}
- Sie können den Zielparameter weglassen. Wenn der Zielparameter weggelassen wird, werden die Ziele implizit durch den Zielparameter definiert. Weitere Informationen finden Sie unter Ziele und IP-Adressen für Regeln für eingehenden Traffic.
Quellparameter: Geben Sie die Quellen (z. B. IP-Adressen) an, die von Clients verwendet werden, die eine Verbindung zu den Load Balancer-Diensten herstellen müssen, auf die die Firewallregel angewendet werden soll.
Eine Anleitung zum Erstellen von Firewallregeln finden Sie unter:
Führen Sie einen NIC-Konnektivitätstest (Network Intelligence Center) durch, um sicherzustellen, dass Ihre manuell erstellten Firewallregeln ordnungsgemäß funktionieren. Beim Ausführen des Konnektivitätstests:
- Legen Sie das Ziel auf die IP-Adresse des Load Balancer-Dienstes fest.
- Legen Sie die Quelle auf die IP-Adresse des Clients fest.
Weitere Informationen finden Sie unter Fehlerbehebung bei Verbindungsproblemen.
Erstellen von VPC-Firewallregeln für LoadBalancer-Dienste deaktivieren
In diesem Abschnitt wird beschrieben, wie Sie das automatische Erstellen von VPC-Firewallregeln für LoadBalancer-Dienste deaktivieren.
Neuen GKE-Cluster mit deaktiviertem Erstellen von VPC-Firewallregeln erstellen
Wenn Sie die automatisch erstellten VPC-Firewallregeln für LoadBalancer-Dienste in einem neu erstellten Cluster deaktivieren möchten, erstellen Sie den Cluster mit dem Flag
--disable-l4-lb-firewall-reconciliation
:gcloud
Autopilot:
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSION
Standard:
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSION
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des neuen Clusters.VERSION
: die GKE-Version.
Terraform
Informationen zum Erstellen eines Clusters mit deaktiviertem Erstellen von VPC-Firewallregeln mit Terraform finden Sie im folgenden Beispiel:
resource "google_container_cluster" "primary" { provider = google-beta name = CLUSTER_NAME location = ZONE enable-l4-ilb-subsetting = true disable_l4_lb_firewall_reconciliation = true }
Erstellen Sie einen externen oder internen LoadBalancer-Dienst:
Prüfen Sie, ob GKE keine Firewallregel zum Zulassen von eingehendem Traffic für den LoadBalancer-Dienst erstellt. Automatisch erstellte Firewallregeln für eingehenden Traffic haben Namen vom folgenden Format:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.Der folgende Befehl gibt nichts zurück:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Vorhandenen GKE-Cluster aktualisieren, um das Erstellen von VPC-Firewallregeln zu deaktivieren
Beachten Sie vor dem Deaktivieren des Erstellens von VPC-Firewallregeln Folgendes zum Aktualisieren eines vorhandenen Clusters:
- Wenn Sie einen vorhandenen Cluster aktualisieren, um das Erstellen von VPC-Firewallregeln zu deaktivieren, löscht GKE keine vorhandenen Firewallregeln, die GKE automatisch für Ihre LoadBalancer-Dienste erstellt hat.
- GKE aktualisiert die vorhandenen Regeln nicht mehr und erstellt keine neuen für die neuen LoadBalancer-Dienste.
- Wenn Sie die Erstellung von VPC-Firewallregeln wieder aktivieren möchten, können Sie das Flag
--enable-l4-lb-firewall-reconciliation
mit dem Befehlgcloud_name container clusters update
verwenden.
So deaktivieren Sie die automatische Erstellung von Firewallregeln in einem vorhandenen Cluster:
Aktualisieren Sie den Cluster, um das automatische Erstellen und Verwalten von Firewallregeln für LoadBalancer-Dienste zu deaktivieren:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_version
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des neuen Clusters.VERSION
: die GKE-Version.
Erstellen Sie einen externen oder internen LoadBalancer-Dienst:
Prüfen Sie, ob GKE keine Firewallregel zum Zulassen von eingehendem Traffic für den LoadBalancer-Dienst erstellt. Automatisch erstellte Firewallregeln zum Zulassen von eingehendem Traffic haben Namen vom folgenden Format:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.Der folgende Befehl gibt nichts zurück:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Verbindungsprobleme beheben
In den folgenden Beispielen wird gezeigt, wie Sie mit den Konnektivitätstests von Network Intelligence Center die Verbindung zu einem externen LoadBalancer-Dienstcluster testen:
Network Intelligence Center:
- Rufen Sie in der Google Cloud Console das Network Intelligence Center auf und starten Sie einen neuen Konnektivitätstest.
- Wählen Sie im Drop-down-Menü Beliebige externe öffentliche IP-Adresse als Quelle und den Load Balancer als Ziel aus.
- Führen Sie den Konnektivitätstest noch einmal aus.
Die gcloud CLI-Befehlszeile:
Mit dem folgenden Beispielbefehl wird ein Test mit der öffentlichen IP-Adresse Ihrer lokalen Workstation als Quelle und der externen IP-Adresse des externen Load Balancers als Ziel erstellt und ausgeführt:
gcloud network-management connectivity-tests create TEST_NAME \ --source-ip-address=SOURCE_IP_ADDRESS \ --source-network-type=NON_GCP_NETWORK \ --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \ --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \ --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAME
Ersetzen Sie Folgendes:
TEST_NAME
: Ein Name für den Konnektivitätstest.SOURCE_IP_ADDRESS
: Die IP-Adresse des Systems, das eine Verbindung zum externen Load Balancer-Dienst herstellen muss. Beispiel:LOADBALANCER_NAME
: Der Name des externen Load Balancer-Dienstes.PROJECT_ID
: Die Projekt-ID des Projekts, das das VPC-Netzwerk des Clusters enthält. Wenn Ihr Cluster ein freigegebenes VPC-Netzwerk verwendet, verwenden Sie die Projekt-ID des Hostprojekts.NETWORK_NAME
: Der Name des VPC-Netzwerks Ihres Clusters.
Testergebnisse prüfen:
gcloud network-management connectivity-tests describe TEST_NAME
Nächste Schritte
- Weitere Informationen zu Firewallrichtlinien
- Unter Automatisch erstellte Firewallregeln finden Sie eine Übersicht über die VPC-Firewallregeln für eingehenden Traffic, die von GKE standardmäßig automatisch erstellt werden.
- Eine Beschreibung der Parameter für LoadBalancer-Dienste finden Sie unter LoadBalancer-Dienstparameter.
- Weitere vorkonfigurierte Firewallregeln in Google Cloud
- Weitere Informationen zum Erstellen von Firewallregeln in Projekten, die eine freigegebene VPC verwenden