Descrizione: informazioni sulla configurazione di rete dei cluster Dataproc. Implementa route VPC, regole firewall, accesso privato Google e VPC condiviso per deployment sicuri con solo IP interni.
Questa pagina spiega i requisiti e le opzioni di configurazione di rete dei cluster Managed Service per Apache Spark.
Requisiti di connettività di Managed Service per Apache Spark
Il cluster Managed Service per Apache Spark deve trovarsi in una rete Virtual Private Cloud che soddisfi i requisiti di route e firewall per accedere in modo sicuro alle API di Google e ad altre risorse.
Requisiti di route
Per stabilire la comunicazione tra l'agente Managed Service per Apache Spark in esecuzione sulle VM del cluster e l'API di controllo Managed Service per Apache Spark, la rete VPC del cluster Managed Service per Apache Spark deve avere una route al gateway internet. Questo è necessario anche per i cluster con solo IP interni.
Per impostazione predefinita, i cluster con versione immagine Managed Service per Apache Spark 2.2 e successive eseguono il provisioning delle VM con indirizzi solo IP interni. Managed Service per Apache Spark abilita automaticamente l'accesso privato Google (PGA) sulla subnet del cluster per consentire alle VM del cluster con indirizzi IP interni di raggiungere le API di Google e i servizi utilizzando una route predefinita generata dal sistema al gateway internet predefinito.
| Regola | Tipo | Intervallo IP di destinazione | Priorità | Limiti di ambito | Hop successivo |
|---|---|---|---|---|---|
default-route-[id] |
Statica | 0.0.0.0/0 |
1000 |
- | Gateway Internet predefinito |
Il PGA garantisce che il traffico del cluster non attraversi la rete internet pubblica e non lasci i data center di Google (vedi il diagramma di esempio del PGA).
consulta Opzioni di routing.Non è consigliabile eliminare la route predefinita al gateway internet. Se vuoi controllare l'accesso alla rete internet, utilizza invece regole o policy firewall.
Se hai eliminato la route predefinita al gateway internet, devi
aggiungere una route predefinita. L'intervallo IP di destinazione deve essere 0.0.0.0/0 perché gli intervalli IP per l'API di controllo Managed Service per Apache Spark non sono statici.
Requisiti del firewall
La rete VPC del cluster Managed Service per Apache Spark deve consentire esplicitamente il seguente traffico:
Traffico avviato dalle VM del cluster Managed Service per Apache Spark all'API di controllo Managed Service per Apache Spark e ad altre VM del cluster Managed Service per Apache Spark. Questo traffico è consentito per impostazione predefinita dalla regola implicita allow-all per il traffico in uscita della rete VPC. Se hai aggiunto regole firewall per il traffico in uscita che sostituiscono quelle predefinite, crea una regola firewall per il traffico in uscita.
Il traffico di risposta dall'API di controllo Managed Service per Apache Spark alle VM del cluster Managed Service per Apache Spark è consentito per impostazione predefinita, grazie alla statefulness del firewall della rete VPC.
Traffico ricevuto dalle VM del cluster Managed Service per Apache Spark da altre VM del cluster Managed Service per Apache Spark. Questo traffico verrà negato per impostazione predefinita dalla regola firewall implicita per negare tutto il traffico in entrata della rete VPC. Devi creare una regola firewall per il traffico in entrata.
- Utilizza i tag di rete per le VM del cluster Managed Service per Apache Spark in modo da limitare l'applicabilità delle regole firewall richieste solo alle VM del cluster Managed Service per Apache Spark. Se non utilizzi i tag di rete, puoi specificare le destinazioni in base al account di servizio utilizzato per le VM del cluster. In alternativa, puoi configurare le regole firewall in modo che vengano applicate a tutte le VM nella rete VPC.
- Per un accesso e una connettività di rete più sicuri, utilizza i tag di sicurezza anziché i tag di rete per definire le origini e le destinazioni delle regole firewall.
Crea una regola firewall per il traffico in entrata
Se tu o il tuo amministratore di rete o della sicurezza create una regola firewall per il traffico in entrata da applicare a una rete VPC del cluster Managed Service per Apache Spark, questa deve avere le seguenti caratteristiche:
Il parametro sources specifica le origini dei pacchetti. Tutte le VM del cluster Managed Service per Apache Spark devono essere in grado di comunicare tra loro. Puoi identificare le VM nel cluster in base all'intervallo di indirizzi IP (l'intervallo principale della subnet del cluster Managed Service per Apache Spark), ai tag di rete o ai service account associati alle VM.
Le destinazioni della regola devono identificare le VM del cluster. Le destinazioni possono essere tutte le VM nella rete VPC oppure puoi identificare le VM in base al tag di rete di destinazione o al account di servizio di destinazione.
La regola deve includere i seguenti protocolli e porte:
- TCP (tutte le porte, da 0 a 65535)
- UDP (tutte le porte, da 0 a 65535)
- ICMP
Managed Service per Apache Spark utilizza servizi in esecuzione su più porte. La specifica di tutte le porte consente ai servizi di essere eseguiti correttamente.
La priorità della regola deve essere superiore alla priorità di qualsiasi regola firewall per il traffico in entrata che si applica alle stesse origini e destinazioni.
Crea una regola firewall per il traffico in uscita
Se tu o il tuo amministratore di rete o della sicurezza create una regola firewall per il traffico in uscita da applicare a una rete VPC del cluster Managed Service per Apache Spark, questa deve avere le seguenti caratteristiche:
Il parametro destinations specifica le destinazioni dei pacchetti. Tutte le VM del cluster Managed Service per Apache Spark devono essere in grado di avviare il traffico tra loro e l'API di controllo Managed Service per Apache Spark. Poiché gli indirizzi IP dell'API di controllo non sono statici, la destinazione deve essere specificata dall'intervallo IP
0.0.0.0/0.Le destinazioni della regola devono identificare le VM del cluster. Le destinazioni possono essere tutte le VM nella rete VPC oppure puoi identificare le VM in base al tag di rete di destinazione o al account di servizio di destinazione.
La regola deve includere i seguenti protocolli e porte:
- TCP (tutte le porte, da 0 a 65535)
- UDP (tutte le porte, da 0 a 65535)
- ICMP
Managed Service per Apache Spark utilizza servizi in esecuzione su più porte. La specifica di tutte le porte consente ai servizi di essere eseguiti correttamente.
La priorità della regola deve essere superiore alla priorità di qualsiasi regola firewall per il traffico in uscita che si applica alle stesse destinazioni e destinazioni.
Diagnostica le regole firewall della rete VPC
Per controllare i pacchetti non elaborati dalle regole firewall con priorità più elevata, puoi creare le seguenti due regole firewall per il traffico in uscita con priorità bassa (65534). A differenza delle regole firewall implicite, puoi abilitare la registrazione delle regole firewall su ciascuna di queste regole con priorità bassa:
Una regola per il traffico in entrata (origini
0.0.0.0/0, tutti i protocolli, tutte le destinazioni nella rete VPC)Una regola per il traffico in uscita (destinazioni
0.0.0.0/0, tutti i protocolli, tutte le destinazioni nella rete VPC)
Con queste regole con priorità bassa e la registrazione delle regole firewall, puoi registrare i pacchetti non elaborati dalle regole firewall con priorità più elevata e potenzialmente più specifiche. Queste due regole con priorità bassa sono anche in linea con le best practice di sicurezza implementando una strategia di "eliminazione finale dei pacchetti".
Esamina i log delle regole firewall per queste regole per determinare se vuoi creare o modificare regole con priorità più elevata per consentire i pacchetti. Ad esempio, se i pacchetti inviati tra le VM del cluster Managed Service per Apache Spark vengono eliminati, questo può indicare che le regole firewall devono essere modificate.
Crea una rete VPC
Anziché utilizzare la rete VPC default, puoi creare la tua rete VPC
in modalità automatica
o personalizzata. Quando crei il cluster, associ la rete al cluster.
Ambiente Assured Workloads: quando utilizzi un ambiente Assured Workloads per la conformità legale, il cluster, la rete VPC e i bucket Cloud Storage devono essere contenuti all'interno dell'ambiente Assured Workloads.
Crea un cluster che utilizza la tua rete VPC
Console
Seleziona la rete nella sezione Configurazione di rete del riquadro Personalizza cluster. Dopo aver scelto la rete, il selettore Subnet mostra le subnet disponibili nella regione selezionata per il cluster.
Google Cloud CLI
Utilizza
gcloud dataproc clusters create
con il ‑‑network o ‑‑subnet
flag per creare un cluster su una subnet nella tua rete.
Se utilizzi il flag ‑‑network, il cluster utilizzerà una subnet con lo stesso nome della rete specificata nella regione in cui viene creato il cluster.
--network example. Poiché le reti in modalità automatica vengono create
con subnet in ogni regione, a ogni subnet viene assegnato il nome della rete. Puoi
passare il nome della rete VPC in modalità automatica al flag ‑‑network.
Il cluster utilizzerà la subnet VPC in modalità automatica nella regione specificata con il flag ‑‑region.
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
--subnet example. Puoi utilizzare il flag ‑‑subnet
per creare un cluster che utilizza una subnet di rete VPC in modalità automatica o personalizzata nella regione del
cluster. Specifica il percorso completo della risorsa della subnet.
gcloud dataproc clusters create CLUSTER_NAMEW \ --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --region=REGION \ ... other args ...
API REST
Puoi specificare il
campo networkUri o subnetworkUri
GceClusterConfig come parte di una
clusters.create.
Esempio
POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
"projectId": "PROJECT_ID",
"clusterName": CLUSTER_NAME,
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": SUBNET_NAME,
},
...
Crea un cluster che utilizza una rete VPC in un altro progetto
Un cluster Managed Service per Apache Spark può utilizzare una rete VPC condivisa definita in un progetto host. Il progetto in cui viene creato il cluster Managed Service per Apache Spark è denominato progetto di servizio.
Trova il numero del progetto del cluster Managed Service per Apache Spark:
- Apri la pagina IAM e amministrazione Impostazioni nella Google Cloud console. Seleziona il progetto in cui creerai il cluster Managed Service per Apache Spark. Copia l'ID progetto.
Un'entità con il ruolo Amministratore VPC condiviso deve eseguire i seguenti passaggi. Per informazioni di base, consulta le istruzioni per la configurazione del VPC condiviso.
Assicurati che il progetto host del VPC condiviso sia abilitato.
Collega il progetto con il cluster Managed Service per Apache Spark al progetto host.
Configura il service account dell'agente di servizio Managed Service per Apache Spark (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) in modo che abbia il ruolo Utente di rete per il progetto host:Apri la pagina IAM e amministrazione nella Google Cloud console.
Utilizza il selettore dei progetti per selezionare il nuovo progetto host.
Fai clic su Concedi l'accesso.
Compila il modulo Concedi l'accesso:
Aggiungi entità: inserisci il account di servizio.
Assegna ruoli: inserisci "Rete Compute" nella casella del filtro, quindi seleziona il ruolo Utente di rete Compute.
Fai clic su Salva.
Dopo che il account di servizio ha il ruolo
Network Userper il progetto host, crea un cluster che utilizza la rete VPC condiviso.
Crea un cluster che utilizza una subnet VPC in un altro progetto
Un cluster Managed Service per Apache Spark può utilizzare una subnet VPC condivisa definita in un progetto host. Il progetto in cui viene creato il cluster Managed Service per Apache Spark è denominato progetto di servizio.
Trova il numero del progetto del cluster Managed Service per Apache Spark:
- Apri la pagina IAM e amministrazione Impostazioni nella Google Cloud console. Seleziona il progetto in cui creerai il cluster Managed Service per Apache Spark. Copia l'ID progetto.
Un'entità con il ruolo Amministratore VPC condiviso deve eseguire i seguenti passaggi. Per informazioni di base, consulta le istruzioni per la configurazione del VPC condiviso.
Assicurati che il progetto host del VPC condiviso sia abilitato.
Collega il progetto con il cluster Managed Service per Apache Spark al progetto host.
Configura il service account dell'agente di servizio Managed Service per Apache Spark (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) in modo che abbia il ruolo Utente di rete per il progetto host:Apri la pagina Reti VPC nella Google Cloud console.
Utilizza il selettore dei progetti per selezionare il progetto host.
Fai clic sulla rete che contiene la subnet che verrà utilizzata dal cluster Managed Service per Apache Spark.
Nella pagina Dettagli rete VPC, fai clic sulla casella di controllo accanto al nome della subnet che verrà utilizzata dal cluster.
Se il riquadro Informazioni non è aperto, fai clic su Mostra riquadro informazioni.
Esegui i seguenti passaggi per ogni account di servizio:
Nel riquadro Informazioni, fai clic su Aggiungi entità.
Compila il modulo Concedi l'accesso:
Aggiungi entità: inserisci il account di servizio.
Assegna ruoli: inserisci "Rete Compute" nella casella del filtro, quindi seleziona il ruolo Utente di rete Compute.
Fai clic su Salva.
Dopo che il account di servizio ha il ruolo
Network Userper il progetto host, crea un cluster che utilizza la subnet VPC condiviso.
Crea un cluster con solo IP interni
Questa sezione si applica ai cluster con versioni immagine precedenti alla 2.2. Le VM del cluster con
indirizzi solo IP interni sono abilitate per impostazione predefinita quando crei cluster Managed Service per Apache Spark
con versioni immagine 2.2 e successive.
Puoi utilizzare la Google Cloud console, gcloud CLI o l'API Dataproc per creare un cluster con solo indirizzi IP interni. Tieni presente che Managed Service per Apache Spark abilita automaticamente l'accesso privato Google sulla subnet regionale del cluster quando è abilitata l'opzione Solo IP interni per consentire le connessioni alle API di Google e ai servizi Google.
Console
Puoi creare un cluster Managed Service per Apache Spark con solo indirizzi IP interni dalla pagina Managed Service per Apache Spark Crea un cluster nella Google Cloud console. Fai clic su Solo IP interni nel riquadro Personalizza cluster per abilitare questa funzionalità per il cluster.
gcloud CLI
Puoi creare un cluster con solo indirizzi IP interni
utilizzando il
gcloud dataproc clusters create
comando con il ‑‑no-address flag.
gcloud dataproc clusters create CLUSTER_NAME \ --no-address \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
Poiché le reti in modalità automatica vengono create con subnet in ogni
regione con lo stesso nome della rete in modalità automatica, puoi passare il nome della rete in modalità automatica al ‑‑network flag
per creare un cluster che utilizzerà la subnet in modalità automatica nella regione del cluster.
In alternativa, puoi utilizzare il flag ‑‑subnet per creare un
cluster che utilizzerà una subnet in modalità automatica o personalizzata nella regione
in cui verrà creato il cluster. Passa il percorso completo della risorsa della subnet al flag ‑‑subnet.
gcloud dataproc clusters create cluster-name \ --no-address \ --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \ --region=region \ ... other args ...
API REST
Puoi utilizzare il
GceClusterConfig.internalIpOnly
campo come parte di una
clusters.create
richiesta per creare un cluster che abiliti solo gli indirizzi IP interni.
Esempio:
POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
"projectId": "my-project-id",
"clusterName": "example-cluster",
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": "custom-subnet-1",
"zoneUri": "us-central1-b",
"internalIpOnly": true
},
...
Scarica le dipendenze con i cluster con solo IP interni
Per impostazione predefinita, i cluster con solo IP interni non hanno accesso a internet. Di conseguenza, i job che scaricano le dipendenze da internet, ad esempio i job che scaricano i pacchetti di dipendenze Spark da Maven Central, non riusciranno. Esistono diverse soluzioni alternative per evitare il problema:
Utilizza Cloud NAT per consentire l'accesso a internet del cluster.
Crea un'immagine personalizzata che includa le dipendenze (ad esempio, i pacchetti di dipendenze Spark in
/usr/lib/spark/jars/).Carica le dipendenze in un bucket Cloud Storage, quindi utilizza un' azione di inizializzazione per scaricare le dipendenze dal bucket durante la creazione del cluster.
Managed Service per Apache Spark e reti Controlli di servizio VPC
Con Controlli di servizio VPC, gli amministratori possono definire un perimetro di sicurezza intorno alle risorse dei servizi gestiti da Google per controllare le comunicazioni con quei servizi.
Tieni presente le seguenti limitazioni e strategie quando utilizzi le reti Controlli di servizio VPC con i cluster Managed Service per Apache Spark:
Per installare i componenti al di fuori del perimetro Controlli di servizio VPC, crea un'immagine personalizzata Managed Service per Apache Spark che preinstalli i componenti, quindi crea il cluster utilizzando l'immagine personalizzata.
Consulta i passaggi speciali di Managed Service per Apache Spark per proteggere l'utilizzo di Controlli di servizio VPC.
Passaggi successivi
- Per risolvere i problemi relativi alla creazione del cluster Managed Service per Apache Spark, consulta Risolvere i problemi di creazione del cluster.