Das Deaktivieren dieser automatisch erstellten Firewallregeln für LoadBalancer-Dienste kann in den folgenden Situationen nützlich sein:
- Wenn Sie mehrere LoadBalancer-Dienste in zwei oder mehr GKE-Clustern haben, kann es effizienter sein, Firewallregeln selbst zu verwalten. Anstatt beispielsweise, dass GKE 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 hierarchische Firewallrichtlinien, globale Netzwerk-Firewallrichtlinien, oder regionale Netzwerk-Firewallrichtlinien anstelle von VPC-Firewallregeln verwenden. Regeln in diesen Firewallrichtlinien unterstützen zusätzliche Aktionen, flexiblere Ziele, und Funktionen wie Geolocation, 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 hat keine Auswirkungen auf andere automatisch erstellte VPC-Firewallregeln, z. B. solche, die die Kommunikation zwischen Knoten ermöglichen, oder solche, die Systemdiagnosen für Ihre Dienste zulassen.
Voraussetzungen
- Wenn Sie von Nutzern verwaltete 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
GKE unterstützt das Deaktivieren der automatischen Erstellung von Firewallregeln für diese Arten von LoadBalancer-Diensten:
- Interne LoadBalancer-Dienste mit GKE-Teilmengeneinstellung
- Backend-Dienst-basierte externe LoadBalancer-Dienste
Sie können die automatische Erstellung von Firewallregeln für diese Arten von LoadBalancer-Diensten nicht deaktivieren:
- Interne LoadBalancer-Dienste ohne GKE-Teilmengeneinstellung
- Zielpool-basierte 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 diesen Task verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Strategien für die manuelle Verwaltung von Firewallregeln
Bevor Sie die automatische Erstellung von VPC-Firewallregeln für LoadBalancer-Dienste in Ihrem GKE-Cluster deaktivieren, sollten Sie mit einem Sicherheitsadministrator eine Strategie für die manuelle Konfiguration von Firewallregeln entwickeln.
Entscheiden Sie, 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, die keine Richtlinie verwenden.
Ihre manuell erstellten Firewallregeln müssen Regeln zum Zulassen von eingehendem Traffic sein, da die implizite Firewallregel zum Ablehnen von eingehendem Traffic eingehenden Traffic verhindert. Wenn Sie die automatische Erstellung 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 LoadBalancer-Dienste angewendet werden. Definieren Sie für jede Firewallregel zum Zulassen von eingehendem Traffic, die Sie erstellen, die folgenden Parameter:
Zielparameter: Die Firewallregel muss mindestens alle Knoten von dem Cluster enthalten, der die LoadBalancer-Dienste enthält. Unterstützte Ziele hängen 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: Fügen Sie alle Protokolle und Zielports ein, 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 Ziel parameter verwenden:
- Fügen Sie die IP-Adressen aller LoadBalancer-Dienste, auf die die Firewallregel angewendet werden soll, in den Zielparameter ein. 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 auch 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 LoadBalancer-Diensten herstellen müssen, auf die die Firewallregel angewendet werden soll.
Eine Anleitung zum Erstellen von Firewallregeln finden Sie unter:
Führen Sie einen Network Intelligence Center-Konnektivitätstest aus, um zu prüfen, ob Ihre manuell erstellten Firewallregeln korrekt funktionieren. So führen Sie den Konnektivitätstest aus:
- Legen Sie das Ziel auf die IP-Adresse des LoadBalancer-Dienstes fest.
- Legen Sie die Quelle auf die IP-Adresse des Clients fest.
Weitere Informationen finden Sie unter Verbindungsprobleme beheben.
Erstellung von VPC-Firewallregeln für Ihre LoadBalancer-Dienste deaktivieren
In diesem Abschnitt wird beschrieben, wie Sie die automatische Erstellung von VPC-Firewallregeln für LoadBalancer-Dienste deaktivieren.
Neuen GKE-Cluster erstellen, bei dem die Erstellung von VPC-Firewallregeln deaktiviert ist
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:Autopilot :
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSIONStandard :
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSIONErsetzen Sie Folgendes:
CLUSTER_NAME: 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 im folgenden Format:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash].Der folgende Befehl gibt eine Liste von Firewallregeln zurück, die
k8s2enthalten:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"Die Antwort sollte nur die Firewallregel für die Systemdiagnose im Format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwzurückgeben, wenn der ParameterexternalTrafficPolicyaufLocalgesetzt ist. Dabei wird der TCP-Port verwendet, der durch den Parameterspec.healthCheckNodePortdefiniert wird. Wenn nicht angegeben, weist die Kubernetes-Steuerungsebene einen Systemdiagnoseport aus dem Knotenportbereich zu.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseWenn der Parameter
externalTrafficPolicyaufClustergesetzt ist, wird stattdessen die folgende Firewallregel für die Systemdiagnose zurückgegeben.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalseWeitere Informationen zu generierten Firewallregeln für GKE Dienste finden Sie unter Automatisch erstellte Firewallregeln.
Vorhandenen GKE-Cluster aktualisieren, um die Erstellung von VPC-Firewallregeln zu deaktivieren
Beachten Sie vor dem Deaktivieren der Erstellung von VPC-Firewallregeln die folgenden Punkte zum Aktualisieren eines vorhandenen Clusters:
- Wenn Sie einen vorhandenen Cluster aktualisieren, um die Erstellung von VPC-Firewallregeln zu deaktivieren, werden keine vorhandenen Firewallregeln gelöscht, die GKE automatisch für Ihre LoadBalancer-Dienste erstellt hat.
- GKE aktualisiert die vorhandenen Regeln nicht mehr und erstellt keine neuen Regeln für die neuen LoadBalancer-Dienste.
- Wenn Sie die Erstellung von VPC-Firewallregeln wieder aktivieren möchten, können Sie das
--enable-l4-lb-firewall-reconciliationFlag mit demgcloud_name container clusters updateBefehl verwenden.
So deaktivieren Sie die automatische Erstellung von Firewallregeln in einem vorhandenen Cluster:
Aktualisieren Sie den Cluster, um die automatische Erstellung und Verwaltung von Firewallregeln für LoadBalancer-Dienste zu deaktivieren:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_versionErsetzen Sie Folgendes:
CLUSTER_NAME: 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 im folgenden Format:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash].Der folgende Befehl gibt eine Liste von Firewallregeln zurück, die
k8s2enthalten:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"Die Antwort sollte nur die Firewallregel für die Systemdiagnose im Format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwzurückgeben, wenn der ParameterexternalTrafficPolicyaufLocalgesetzt ist. Dabei wird der TCP-Port verwendet, der durch den Parameterspec.healthCheckNodePortdefiniert wird. Wenn nicht angegeben, weist die Kubernetes-Steuerungsebene einen Systemdiagnoseport aus dem Knotenportbereich zu.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseWenn der Parameter
externalTrafficPolicyaufClustergesetzt ist, wird stattdessen die folgende Firewallregel für die Systemdiagnose zurückgegeben.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalseWeitere Informationen zu generierten Firewallregeln für GKE Dienste finden Sie unter Automatisch erstellte Firewallregeln.
Verbindungsprobleme beheben
Die folgenden Beispiele veranschaulichen, wie Sie mit Network Intelligence Center-Konnektivitätstests die Verbindung zu einem externen LoadBalancer-Dienst testen:cluster:
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 aus und wählen Sie Ihren Load-Balancer als Ziel aus.
- Führen Sie den Konnektivitätstest noch einmal aus.
Die gcloud CLI-Befehlszeile:
Der folgende Beispielbefehl erstellt und führt einen Test mit der öffentlichen IP-Adresse Ihrer lokalen Workstation als Quelle und der externen IP-Adresse des externen Load-Balancers als Ziel aus:
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_NAMEErsetzen Sie Folgendes:
TEST_NAME: ein Name für den Konnektivitätstest.SOURCE_IP_ADDRESS: die IP-Adresse des Systems, das eine Verbindung zum externen LoadBalancer-Dienst herstellen muss. Beispiel:LOADBALANCER_NAME: der Name des externen LoadBalancer-Dienstes.PROJECT_ID: die Projekt-ID des Projekts, das das VPC-Netzwerk des Clusters enthält. Wenn Ihr Cluster ein freigegebene 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 Firewall regeln finden Sie eine Übersicht über die VPC-Firewallregeln zum Zulassen von eingehendem Traffic, die GKE standardmäßig automatisch erstellt.
- Unter LoadBalancer-Service-Parameter finden Sie eine Beschreibung der Parameter für LoadBalancer-Dienste.
- Weitere vorkonfigurierte Firewallregeln in Google Cloud.
- Weitere Informationen zum Erstellen von Firewallregeln in Projekten, die eine freigegebene VPC verwenden.