Configurazione di rete del cluster Managed Service per Apache Spark

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:

Best practice:

  • 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:

  1. Una regola per il traffico in entrata (origini 0.0.0.0/0, tutti i protocolli, tutte le destinazioni nella rete VPC)

  2. 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.

  1. Trova il numero del progetto del cluster Managed Service per Apache Spark:

    1. 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.
  2. 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.

    1. Assicurati che il progetto host del VPC condiviso sia abilitato.

    2. Collega il progetto con il cluster Managed Service per Apache Spark al progetto host.

    3. 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:

      1. Apri la pagina IAM e amministrazione nella Google Cloud console.

      2. Utilizza il selettore dei progetti per selezionare il nuovo progetto host.

      3. Fai clic su Concedi l'accesso.

      4. Compila il modulo Concedi l'accesso:

        1. Aggiungi entità: inserisci il account di servizio.

        2. Assegna ruoli: inserisci "Rete Compute" nella casella del filtro, quindi seleziona il ruolo Utente di rete Compute.

        3. Fai clic su Salva.

  3. Dopo che il account di servizio ha il ruolo Network User per 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.

  1. Trova il numero del progetto del cluster Managed Service per Apache Spark:

    1. 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.
  2. 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.

    1. Assicurati che il progetto host del VPC condiviso sia abilitato.

    2. Collega il progetto con il cluster Managed Service per Apache Spark al progetto host.

    3. 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:

      1. Apri la pagina Reti VPC nella Google Cloud console.

      2. Utilizza il selettore dei progetti per selezionare il progetto host.

      3. Fai clic sulla rete che contiene la subnet che verrà utilizzata dal cluster Managed Service per Apache Spark.

      4. Nella pagina Dettagli rete VPC, fai clic sulla casella di controllo accanto al nome della subnet che verrà utilizzata dal cluster.

      5. Se il riquadro Informazioni non è aperto, fai clic su Mostra riquadro informazioni.

      6. Esegui i seguenti passaggi per ogni account di servizio:

        1. Nel riquadro Informazioni, fai clic su Aggiungi entità.

        2. Compila il modulo Concedi l'accesso:

          1. Aggiungi entità: inserisci il account di servizio.

          2. Assegna ruoli: inserisci "Rete Compute" nella casella del filtro, quindi seleziona il ruolo Utente di rete Compute.

          3. Fai clic su Salva.

  3. Dopo che il account di servizio ha il ruolo Network User per 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:

  1. Utilizza Cloud NAT per consentire l'accesso a internet del cluster.

  2. Crea un'immagine personalizzata che includa le dipendenze (ad esempio, i pacchetti di dipendenze Spark in /usr/lib/spark/jars/).

  3. 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:

Passaggi successivi