Questa pagina descrive come disattivare le regole firewall VPC per l'autorizzazione in entrata create da GKE per i servizi LoadBalancer.
La disattivazione di queste regole firewall create automaticamente per i servizi LoadBalancer può essere utile nelle seguenti situazioni:
- Se hai più servizi LoadBalancer in due o più cluster GKE, la gestione autonoma delle regole firewall può essere più efficiente. Ad esempio, invece di consentire a GKE di creare una regola firewall univoca per ogni servizio LoadBalancer, le regole firewall create manualmente possono consentire il traffico in entrata per più servizi LoadBalancer.
- Puoi utilizzare i criteri firewall gerarchici, i criteri firewall di rete globali o i criteri firewall di rete regionali invece delle regole firewall VPC. Le regole in questi criteri firewall supportano azioni aggiuntive, target più flessibili e funzionalità come geolocalizzazione, threat intelligence, gruppi di indirizzi e FQDN.
Per disattivare le regole firewall create automaticamente per i servizi LoadBalancer, devi specificare il flag --disable-l4-lb-firewall-reconciliation
quando crei o aggiorni un cluster. Il flag --disable-l4-lb-firewall-reconciliation
non influisce su altre
regole firewall VPC create automaticamente, ad esempio quelle che facilitano
la comunicazione tra i nodi o quelle che consentono i controlli di integrità per i tuoi servizi.
Requisiti
- Per utilizzare le regole firewall gestite dall'utente per i servizi LoadBalancer, i cluster GKE devono utilizzare la versione 1.31.3-gke.105600 o successiva.
Limitazioni
GKE supporta la disattivazione della creazione automatica delle regole firewall per questi tipi di servizi LoadBalancer:
- Servizi LoadBalancer interni che utilizzano il sottoinsieme GKE
- Servizi LoadBalancer esterni basati su servizi di backend
Non puoi disattivare la creazione automatica delle regole firewall per questi tipi di servizi LoadBalancer:
- Servizi LoadBalancer interni che non utilizzano il sottoinsieme GKE
- Servizi LoadBalancer esterni basati su pool di destinazione
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Strategie per la gestione manuale delle regole firewall
Prima di disattivare la creazione automatica delle regole firewall VPC per i servizi LoadBalancer nel tuo cluster GKE, collabora con un amministratore della sicurezza per sviluppare una strategia per configurare manualmente le regole firewall.
Decidi quale tipo di criterio firewall utilizzare: un criterio firewall gerarchico, un criterio firewall di rete globale o un criterio firewall di rete regionale. Per la procedura per creare un criterio firewall, consulta:
- Utilizzare criteri e regole firewall gerarchici
- Utilizzare criteri e regole firewall di rete globali
- Utilizzare criteri e regole firewall di rete regionali
Puoi anche utilizzare le regole firewall VPC, che non utilizzano alcun criterio.
Le regole firewall create manualmente devono essere regole di autorizzazione in entrata perché la regola firewall di negazione implicita in entrata vieta il traffico in entrata. Se hai disattivato la creazione automatica delle regole firewall VPC, il traffico in entrata non raggiungerà i tuoi nodi, a meno che tu non abbia creato regole firewall di autorizzazione in entrata che corrispondano al traffico per i tuoi servizi LoadBalancer.
A seconda dei parametri della regola firewall, una singola regola firewall di autorizzazione in entrata può essere applicata a uno o più servizi LoadBalancer. Per ogni regola firewall di autorizzazione in entrata che crei, definisci i seguenti parametri:
Parametro Target: assicurati che la regola del firewall includa almeno tutti i nodi del cluster che contengono i servizi LoadBalancer. I target supportati dipendono dal tipo di criterio firewall in cui si trova una regola o se utilizzi una regola firewall VPC. Per informazioni sul parametro target di una regola in un criterio firewall, consulta Target.
Protocolli e porte: includi tutti i protocolli e le porte di destinazione utilizzati dai servizi LoadBalancer a cui deve essere applicata la regola firewall.
Parametro destinazione: puoi utilizzare una delle seguenti strategie per il parametro destinazione:
- Includi gli indirizzi IP di tutti i servizi LoadBalancer a cui deve essere applicata la regola del firewall nel parametro di destinazione. Per trovare l'indirizzo IP di un servizio LoadBalancer, utilizza il seguente comando:
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}
- Puoi scegliere di omettere il parametro destinazione. Se il parametro destinazione viene omesso, il parametro target definisce le destinazioni in modo implicito. Per maggiori informazioni, vedi Destinatari e indirizzi IP per le regole di ingresso.
Parametro di origine: specifica le origini (ad esempio gli indirizzi IP) utilizzate dai client che devono connettersi ai servizi di bilanciamento del carico a cui deve essere applicata la regola del firewall.
Per la procedura per creare regole firewall, consulta:
Per assicurarti che le regole firewall create manualmente funzionino correttamente, esegui un test di connettività del Network Intelligence Center (NIC). Quando esegui il test di connettività:
- Imposta la destinazione sull'indirizzo IP del servizio LoadBalancer.
- Imposta l'origine sull'indirizzo IP del client.
Per ulteriori informazioni, vedi Risolvere i problemi di connettività.
Disattivare la creazione di regole firewall VPC per i servizi LoadBalancer
Questa sezione descrive i passaggi per disattivare la creazione automatica delle regole firewall VPC per i servizi LoadBalancer.
Creare un nuovo cluster GKE con la creazione di regole firewall VPC disattivata
Per disattivare le regole firewall VPC create automaticamente per i servizi LoadBalancer in un cluster appena creato, crea il cluster con il 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
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.VERSION
: la versione di GKE.
Terraform
Per creare un cluster con la creazione di regole firewall VPC disabilitata utilizzando Terraform, consulta il seguente esempio:
resource "google_container_cluster" "primary" { provider = google-beta name = CLUSTER_NAME location = ZONE enable-l4-ilb-subsetting = true disable_l4_lb_firewall_reconciliation = true }
Crea un servizio LoadBalancer esterno o interno:
Verifica che GKE non crei una regola firewall di autorizzazione in entrata per il servizio LoadBalancer. Le regole firewall di autorizzazione in entrata create automaticamente hanno nomi del seguente tipo:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.Il seguente comando non restituisce nulla:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Aggiorna un cluster GKE esistente per disattivare la creazione di regole firewall VPC
Prima di disattivare la creazione delle regole firewall VPC, tieni presente quanto segue sull'aggiornamento di un cluster esistente:
- Quando aggiorni un cluster esistente per disattivare la creazione delle regole firewall VPC, GKE non elimina le regole firewall esistenti create automaticamente per i servizi LoadBalancer.
- GKE interrompe l'aggiornamento delle regole esistenti e non ne creerà di nuove per i nuovi servizi LoadBalancer.
- Per riattivare la creazione delle regole firewall VPC, puoi utilizzare il flag
--enable-l4-lb-firewall-reconciliation
con il comandogcloud_name container clusters update
.
Per disattivare la creazione automatica delle regole firewall in un cluster esistente:
Aggiorna il cluster per disattivare la creazione e la gestione automatica delle regole firewall per i servizi LoadBalancer:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_version
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.VERSION
: la versione di GKE.
Crea un servizio LoadBalancer esterno o interno:
Verifica che GKE non crei una regola firewall di autorizzazione in entrata per il servizio LoadBalancer. Le regole firewall in entrata consentite create automaticamente hanno nomi del seguente tipo:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.Il seguente comando non restituisce nulla:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Risolvere i problemi di connettività
I seguenti esempi illustrano come utilizzare i test di connettività di Network Intelligence Center per verificare la connettività a un cluster LoadBalancer Service:
Network Intelligence Center:
- Nella console Google Cloud, vai a Network Intelligence Center e avvia un nuovo test di connettività.
- Dal menu a discesa, scegli Qualsiasi indirizzo IP pubblico esterno come origine e seleziona il bilanciatore del carico dalla destinazione.
- Esegui di nuovo il test di connettività.
L'interfaccia a riga di comando gcloud:
Il seguente comando di esempio crea ed esegue un test con l'indirizzo IP pubblico della tua workstation locale come origine e l'indirizzo IP esterno del bilanciatore del carico esterno come destinazione:
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
Sostituisci quanto segue:
TEST_NAME
: un nome per il test di connettività.SOURCE_IP_ADDRESS
: l'indirizzo IP del sistema che deve collegarsi al servizio LoadBalancer esterno. Ad esempioLOADBALANCER_NAME
: il nome del servizio LoadBalancer esterno.PROJECT_ID
: l'ID del progetto che contiene la rete VPC del cluster. Se il cluster utilizza una rete VPC condivisa, utilizza l'ID progetto del progetto host.NETWORK_NAME
: il nome della rete VPC del tuo cluster.
Controlla i risultati del test:
gcloud network-management connectivity-tests describe TEST_NAME
Passaggi successivi
- Scopri di più sui criteri firewall.
- Leggi la sezione Regole firewall create automaticamente per una panoramica delle regole firewall VPC che consentono l'ingresso create automaticamente da GKE per impostazione predefinita.
- Leggi la sezione Parametri del servizio LoadBalancer per una descrizione dei parametri per i servizi LoadBalancer.
- Scopri di più sulle altre regole firewall precompilate in Google Cloud.
- Scopri di più sulla creazione di regole di firewall nei progetti che utilizzano VPC condiviso.