Questo documento spiega come configurare le istanze di macchine virtuali (VM) Dataflow per l'accesso a internet, creare tag di rete e definire le regole firewall per la rete associata ai job Dataflow.
Questo documento richiede la conoscenza di base delle reti Google Cloud. Per definire una rete per il job Dataflow, vedi Specificare rete e subnet.
Accesso a internet per Dataflow
Le macchine virtuali (VM) worker Dataflow devono raggiungere le API e i servizi Google Cloud. A seconda del caso d'uso, le VM potrebbero anche richiedere l'accesso a risorse esterne a Google Cloud. Utilizza uno dei seguenti metodi per configurare l'accesso a internet per Dataflow:
Configura le VM worker con un indirizzo IP esterno in modo che soddisfino i requisiti di accesso a internet.
Configura l'accesso privato Google. Con l'accesso privato Google, le VM che hanno solo indirizzi IP interni possono accedere agli indirizzi IP per Google Cloud e i servizi.
Configura un indirizzo IP dell'endpoint di Private Service Connect per accedere alle API e ai servizi Google Cloud.
Configura una soluzione NAT, ad esempio Cloud NAT. Questa opzione consente l'esecuzione di job che accedono ad API e servizi al di fuori di Google Cloud che richiedono l'accesso a internet. Ad esempio, i job dell'SDK Python potrebbero richiedere l'accesso al Python Package Index (PyPI) per scaricare le dipendenze delle pipeline. In questo caso, devi configurare le VM worker con indirizzi IP esterni o utilizzare Cloud NAT. Puoi anche fornire le dipendenze della pipeline Python durante l'invio del job. Ad esempio, puoi utilizzare container personalizzati per fornire le dipendenze della pipeline Python, eliminando così la necessità di accedere a PyPI in fase di runtime.
Per ulteriori informazioni, consulta la pagina relativa alla gestione delle dipendenze della pipeline Python nella documentazione di Apache Beam.
Disattiva l'indirizzo IP esterno
Per impostazione predefinita, il servizio Dataflow assegna ai worker indirizzi IP interni ed esterni. Quando disattivi gli indirizzi IP esterni, la pipeline Dataflow può accedere alle risorse solo nelle seguenti posizioni:
- Un'altra istanza nella stessa rete VPC
- Una rete VPC condivisa
- Una rete con peering di rete VPC abilitato
Senza indirizzi IP esterni, puoi comunque eseguire attività di amministrazione e monitoraggio. Puoi accedere ai tuoi worker utilizzando SSH tramite le opzioni elencate nell'elenco precedente. Tuttavia, la pipeline non può accedere a internet e gli host internet non possono accedere ai worker Dataflow.
Il mancato utilizzo di indirizzi IP esterni contribuisce a proteggere meglio l'infrastruttura di trattamento dati. Inoltre, riduci anche il numero di indirizzi IP esterni che utilizzi nella quota di progetti Google Cloud.
Se disattivi gli indirizzi IP esterni, i job Dataflow non possono accedere ad API e servizi esterni a Google Cloud che richiedono l'accesso a internet.
Per informazioni sulla configurazione dell'accesso a internet per job con indirizzi IP interni, leggi la sezione precedente.
Per disattivare gli indirizzi IP esterni, esegui una delle seguenti operazioni:
Java
- Abilita l'accesso privato Google per la tua rete o la tua subnet.
- Nei parametri del job Dataflow, specifica
--usePublicIps=false
e--network=NETWORK-NAME
o--subnetwork=SUBNETWORK-NAME
.A seconda della tua scelta, sostituisci uno dei seguenti elementi:
- NETWORK-NAME: il nome della tua rete Compute Engine
- SUBNETWORK-NAME: il nome della subnet Compute Engine
Python
- Per posizionare temporaneamente tutte le dipendenze dei pacchetti Python, segui le istruzioni per le dipendenze delle pipeline di Apache Beam.
- Abilita l'accesso privato Google per la tua rete o la tua subnet.
- Nei parametri del job Dataflow, specifica
--no_use_public_ips
e--network=NETWORK
o--subnetwork=SUBNETWORK
. - NETWORK-NAME: il nome della tua rete Compute Engine
- SUBNETWORK-NAME: il nome della subnet Compute Engine
A seconda della tua scelta, sostituisci uno dei seguenti elementi:
Go
- Abilita l'accesso privato Google per la tua rete o la tua subnet.
- Nei parametri del job Dataflow, specifica
--no_use_public_ips
e--network=NETWORK
o--subnetwork=SUBNETWORK
. - NETWORK-NAME: il nome della tua rete Compute Engine
- SUBNETWORK-NAME: il nome della subnet Compute Engine
A seconda della tua scelta, sostituisci uno dei seguenti elementi:
Tag di rete per Dataflow
I tag di rete sono attributi di testo che puoi collegare alle VM di Compute Engine. I tag di rete consentono di applicare le regole firewall di rete VPC e alcune route statiche personalizzate a istanze VM specifiche. Dataflow supporta l'aggiunta di tag di rete a tutte le VM worker che eseguono un determinato job Dataflow.
Anche se non utilizzi il parametro di rete, Dataflow aggiunge sempre il tag di rete predefinito dataflow
a ogni VM worker creata.
Attiva tag di rete
Puoi specificare i tag di rete solo quando esegui il modello di job Dataflow per creare un job. Dopo l'avvio di un job, non puoi aggiungere altri tag di rete al job. Per applicare tag di rete aggiuntivi a un job, devi ricreare il modello con i tag di rete richiesti.
Aggiungi quanto segue al codice della pipeline, a prescindere che venga eseguito in Java o Python:
--experiments=use_network_tags=TAG-NAME
Sostituisci TAG-NAME con i nomi dei tag. Se aggiungi più di un tag, separa ogni tag con un punto e virgola (;
), come mostrato nel seguente formato: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Anche se non utilizzi questo parametro, Dataflow aggiunge sempre il tag di rete dataflow
a ogni VM worker creata.
Abilita tag di rete per le VM dei modelli flessibili
Quando utilizzi i modelli flessibili, per abilitare i tag di rete per le VM worker Dataflow, utilizza l'opzione --additional-experiments
come mostrato nell'esempio seguente:
--additional-experiments=use_network_tags=TAG-NAME
Per abilitare i tag di rete sia per le VM worker sia per le VM dell'avvio app, devi utilizzare le due opzioni seguenti:
--additional-experiments=use_network_tags=TAG-NAME
--additional-experiments=use_network_tags_for_flex_templates=TAG-NAME
Sostituisci TAG-NAME con i nomi dei tag. Se aggiungi più di un tag, separa ogni tag con un punto e virgola (;
), come mostrato nel seguente formato: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Dopo averli abilitati, i tag di rete vengono analizzati e collegati alle VM.
Consulta i limiti applicabili ai tag di rete.
Regole firewall per Dataflow
Con le regole firewall puoi consentire o negare il traffico da e verso le tue VM. Se i job Dataflow utilizzano Dataflow shuffling o Streaming Engine, non è necessario configurare alcuna regola firewall. Altrimenti, devi configurare regole firewall in modo che le VM Dataflow possano inviare e ricevere traffico di rete sulla porta TCP 12345
per i job di flusso e sulla porta TCP 12346
per i job batch.
Un proprietario, un editor o un amministratore del progetto deve creare le regole firewall necessarie nella rete VPC utilizzata dalle VM Dataflow.
Prima di configurare le regole firewall per Dataflow, leggi i seguenti documenti:
Panoramica delle regole firewall VPC e Utilizzo delle regole firewall
Panoramica dei criteri firewall gerarchici e Utilizzo dei criteri firewall gerarchici
Quando crei regole firewall per Dataflow, specifica i tag di rete Dataflow. In caso contrario, le regole firewall si applicano a tutte le VM nella rete VPC.
Ove applicabile, i criteri firewall gerarchici vengono valutati per primi e queste regole prerilasciano le regole firewall VPC. Se il job di Dataflow si trova in un progetto che fa parte di una cartella o un'organizzazione in cui vengono utilizzati i criteri firewall gerarchici, per apportare modifiche ai criteri è necessario il ruolo compute.orgFirewallPolicyAdmin
.
Se non hai creato tag di rete personalizzati quando hai eseguito il codice della pipeline, le VM Dataflow utilizzano il tag dataflow
predefinito. In assenza di tag di rete personalizzati, crea le regole firewall con il tag dataflow
predefinito.
Se hai creato tag di rete personalizzati durante l'esecuzione del codice della pipeline, le VM Dataflow utilizzano quei tag. Crea le regole firewall con i tag personalizzati.
Alcune reti VPC, come la rete default
creata automaticamente, includono una regola default-allow-internal
che soddisfa i requisiti del firewall per Dataflow.
Esempio di regola firewall in entrata
La regola firewall in entrata consente alle VM Dataflow di ricevere pacchetti l'una dall'altra. Devi sempre creare regole firewall di autorizzazione in entrata, altrimenti il traffico è sempre bloccato, anche se le regole in uscita consentono questo tipo di traffico.
Nell'esempio seguente, viene creata una regola firewall in entrata per Dataflow, in cui tutte le VM worker hanno il tag di rete predefinito dataflow
. Un proprietario, un editor o un amministratore della sicurezza del progetto può utilizzare il seguente comando gcloud
per creare una regola di autorizzazione in entrata che consenta il traffico sulle porte TCP 12345
e 12346
dalle VM con il tag di rete dataflow
ad altre VM con lo stesso tag:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Sostituisci quanto segue:
FIREWALL_RULE_NAME_INGRESS
: un nome per la regola firewallNETWORK
: nome della rete utilizzata dalle VM workerCUSTOM_TAG
: un elenco di tag di rete delimitati da virgoleDi seguito sono riportate le linee guida per l'utilizzo dei tag di rete:
Se ometti
--target-tags
, la regola si applica a tutte le VM nella rete VPC.Se ometti
--source-tags
e tutte le altre specifiche relative alle origini, è consentito il traffico da qualsiasi origine.Se non hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza
dataflow
come tag di rete.Se hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza i tag di rete personalizzati.
PRIORITY_NUM
: la priorità della regola firewallI numeri più bassi hanno priorità più alta e 0 è la priorità più alta.
Esempio di regola firewall in uscita
La regola firewall in uscita consente alle VM Dataflow di scambiarsi pacchetti. Se hai creato regole firewall di negazione per il traffico in uscita, potrebbe essere necessario creare regole firewall di autorizzazione per il traffico in uscita personalizzate nella tua rete VPC.
In questo esempio, viene creata una regola di traffico in uscita dal firewall per Dataflow, in cui tutte le VM worker hanno il tag di rete predefinito dataflow
. Un proprietario, un editor o un amministratore della sicurezza del progetto può utilizzare il seguente comando gcloud
per creare una regola di autorizzazione in uscita che consenta il traffico dalle porte TCP 12345
e 12346
sulle VM con il tag di rete dataflow
verso altre VM con lo stesso tag:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Sostituisci quanto segue:
FIREWALL_RULE_NAME_EGRESS
: un nome per la regola firewallNETWORK
: nome della rete utilizzata dalle VM workerCUSTOM_TAG
: un elenco di tag di rete delimitati da virgoleDi seguito sono riportate le linee guida per l'utilizzo dei tag di rete:
Se ometti
--target-tags
, la regola si applica a tutte le VM nella rete VPC.Se ometti
--source-tags
e tutte le altre specifiche relative alle origini, è consentito il traffico da qualsiasi origine.Se non hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza
dataflow
come tag di rete.Se hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza i tag di rete personalizzati.
DESTINATION-RANGES
: un elenco di CIDR separati da virgoleIncludi l'intervallo di indirizzi IP principali della subnet selezionata.
PRIORITY_NUM
: la priorità della regola firewallI numeri più bassi hanno priorità più alta e 0 è la priorità più alta.
Per le porte TCP specifiche utilizzate da Dataflow, puoi visualizzare il manifest del container del progetto. Il manifest del container specifica esplicitamente le porte al fine di mappare le porte host nel container.
Accesso SSH alle VM worker
Dataflow non richiede SSH, ma è utile per la risoluzione dei problemi.
Se la tua VM worker ha un indirizzo IP esterno, puoi connetterti alla VM tramite la console Google Cloud o utilizzando Google Cloud CLI. Per connetterti
utilizzando SSH, devi disporre di una regola firewall che consenta le connessioni in entrata sulla porta TCP 22
almeno dall'indirizzo IP del sistema su cui stai eseguendo
gcloud
o dal sistema che esegue il browser web che utilizzi per accedere alla
console Google Cloud.
Puoi visualizzare la configurazione e l'attività di rete aprendo una sessione SSH su uno dei tuoi worker ed eseguendo iproute2
. Per ulteriori informazioni, consulta la pagina iproute2
.
Se devi connetterti a una VM worker che ha solo un indirizzo IP interno, consulta Scegliere un'opzione di connessione per le VM solo interne.