Specifica una rete e una subnet

Questo documento spiega come specificare una rete o una sottorete o entrambe le opzioni quando esegui i job di Dataflow.

Questo documento richiede che tu sappia come creare reti Google Cloud e subnet. Questo documento richiede anche la tua familiarità con i termini relativi alla rete di cui parleremo nella prossima sezione.

La rete default ha configurazioni che consentono l'esecuzione dei job Dataflow. Tuttavia, altri servizi potrebbero usano questa rete. Assicurati che le modifiche alla rete default siano compatibili con tutti i tuoi servizi. In alternativa, crea una rete distinta per Dataflow.

Per saperne di più su come risolvere i problemi di rete, consulta Risolvere i problemi di rete di Dataflow.

Terminologia della rete Google Cloud

  • Rete VPC. Una rete VPC è una la versione virtuale di una rete fisica implementata all'interno del database sulla tua rete di produzione, A volte chiamato rete, un VPC fornisce e la connettività per le risorse di un progetto.

    Per scoprire di più su VPC, consulta la panoramica della rete VPC.

  • Rete VPC condivisa. Quando utilizzi una rete VPC condivisa, designi un progetto come progetto host e colleghi uno o più altri progetti di servizio. Le reti VPC nel progetto host sono chiamate reti VPC condivise. Se Amministratore VPC condiviso ti definisce come Amministratore progetto di servizio, si dispone dell'autorizzazione per utilizzare almeno alcune subnet nelle reti progetto host.

    Per saperne di più sul VPC condiviso, consulta Panoramica del VPC condiviso.

  • Controlli di servizio VPC. Controlli di servizio VPC Dataflow Contribuisci a proteggerti da azioni accidentali o mirate da entità esterne o interne, il che aiuta a ridurre al minimo rischi di esfiltrazione di dati. Puoi utilizzare Controlli di servizio VPC per creare perimetri per proteggere le risorse e i dati dei servizi specificati in modo esplicito.

    Per scoprire di più sui Controlli di servizio VPC, consulta Panoramica dei Controlli di servizio VPC. Per conoscere i limiti dell'utilizzo di Dataflow con Controlli di servizio VPC, consulta prodotti supportati e limitazioni.

  • Regole firewall. Utilizza le regole del firewall per consentire o negare il traffico da e verso per le tue VM. Per ulteriori informazioni, vedi Configura l'accesso a internet e le regole del firewall.

Rete e sottorete per un job Dataflow

Quando crei un job Dataflow, puoi specificare una rete, una subnet o entrambe le opzioni.

Tieni in considerazione le seguenti linee guida:

  • Se hai dubbi su quale parametro utilizzare, specifica solo il parametro subnetwork. Il parametro di rete viene quindi specificato in modo implicito.

  • Se ometti sia la subnet sia i parametri di rete, Google Cloud presuppone intendi utilizzare una rete VPC in modalità automatica denominata default. Se nel tuo progetto non è presente una rete denominata default, devi specificare un o una subnet alternativa.

Linee guida per la specifica di un parametro di rete

  • Puoi selezionare rete VPC in modalità automatica nel tuo progetto con il parametro di rete.

  • Puoi specificare una rete utilizzando solo il nome e non l'URL completo.

  • Puoi utilizzare il parametro di rete solo per selezionare un VPC condiviso rete se entrambe le seguenti condizioni sono vere:

    • La rete VPC condivisa che selezioni è un VPC in modalità automatica in ogni rete.

    • Sei un amministratore del progetto di servizio con autorizzazioni a livello di progetto per l'intero progetto host VPC condiviso. Un VPC condiviso L'amministratore ti ha concesso il ruolo Utente di rete Compute per l'intero progetto host, in modo che tu possa utilizzare tutte le relative reti e subnet.

  • In tutti gli altri casi, devi specificare una subnet.

Linee guida per la specifica di un parametro di subnet

  • Se specifichi una sottorete, Dataflow sceglie la rete per te. Pertanto, quando specifichi una sottorete, puoi omettere il parametro network.

  • Per selezionare una subnet specifica in una rete, utilizza il parametro subnet.

  • Specifica una subnet utilizzando un URL completo o un percorso abbreviato. Se la subnet si trova in una rete VPC condivisa, devi utilizzare l'URL completo.

  • Devi selezionare una sottorete nella stessa regione della zona in cui esegui i tuoi worker Dataflow. Ad esempio, devi specificare il parametro subnetwork nelle seguenti situazioni:

    • La subnet specificata si trova in una rete VPC in modalità personalizzata.

    • Sei un amministratore del progetto di servizio con autorizzazioni a livello di subnet per una subnet specifica in un progetto host VPC condiviso.

  • La dimensione della sottorete limita il numero di istanze solo in base al numero di indirizzi IP disponibili. Queste dimensioni non hanno alcun impatto su Dataflow Prestazioni dei Controlli di servizio VPC.

Linee guida per la specifica di un parametro di subnet per il VPC condiviso

  • Quando specifichi l'URL della subnet per la VPC condivisa, assicurati che HOST_PROJECT_ID sia il progetto in cui è ospitata la VPC.

  • Se la subnet si trova in una rete VPC condiviso, devi utilizzare l'URL completo. Consulta un esempio di URL completo che specifica una sottorete.

  • Assicurati che la subnet del VPC condiviso sia condivisa con l'account di servizio Dataflow e che abbia il ruolo Utente di rete Compute assegnato alla subnet specificata. Il ruolo Utente di rete Compute deve essere assegnato all'account di servizio Dataflow nel progetto host.

    1. Nella console Google Cloud, vai alla pagina VPC condiviso.

      Vai alla pagina Rete VPC condivisa

    2. Seleziona un progetto host.

    3. Nella sezione Accesso a singole subnet, seleziona la tua subnet. La Il riquadro Autorizzazioni a livello di subnet mostra le autorizzazioni per questa subnet. Puoi vedere se alla sottorete VPC è stato assegnato il ruolo Utente di rete Compute.

    4. Per concedere le autorizzazioni, nel riquadro Autorizzazioni a livello di subnet, fai clic su Aggiungi entità.

    Se la rete non è condivisa, quando provi a eseguire il job: appare il messaggio di errore: Error: Message: Required 'compute.subnetworks.get' permission. Per ulteriori informazioni, vedi Obbligatorio "compute.subnetworks.get" autorizzazione in "Risolvere i problemi relativi alle autorizzazioni Dataflow".

Esempi di specifiche di reti e subnet

Esempio di URL completo che specifica una sottorete:

https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Sostituisci quanto segue:

  • HOST_PROJECT_ID: ID progetto host
  • REGION_NAME: la regione del tuo job Dataflow
  • SUBNETWORK_NAME: il nome della subnet Compute Engine

Di seguito è riportato un URL di esempio, in cui l'ID progetto host è my-cloud-project, la regione è us-central1 e il nome della subnet è mysubnetwork:

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork

Di seguito è riportato un esempio di un modulo breve che specifica una sottorete:

regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Sostituisci quanto segue:

  • REGION_NAME: la regione del job Dataflow
  • SUBNETWORK_NAME: il nome della sottorete Compute Engine

Esegui la pipeline con la rete specificata

Se si desidera utilizzare una rete diversa da quella predefinita creata Google Cloud, nella maggior parte dei casi, specifica la subnet. La rete viene automaticamente dedotta dalla subnet specificata. Per ulteriori informazioni, consulta le linee guida per la specifica di un parametro di rete in questo documento.

L'esempio seguente mostra come eseguire la pipeline dalla riga di comando o utilizzando l'API REST. L'esempio specifica una rete.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --network=NETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

Vai

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

API

Se esegui un modello Dataflow utilizzando l'API REST, aggiungi network o subnetwork o entrambi all'oggetto environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Sostituisci quanto segue:

  • JOB_NAME: il nome del job Dataflow (solo API)
  • INPUT_PATH: il percorso della sorgente
  • HOST_PROJECT_ID: ID progetto host
  • REGION: una regione Dataflow, come us-central1
  • STORAGE_BUCKET: il bucket di archiviazione
  • NETWORK_NAME: il nome della tua rete Compute Engine

Esegui la pipeline con la subnet specificata

Se sei un amministratore di progetti di servizio che ha solo l'autorizzazione per utilizzare specifiche subnet in una rete VPC condiviso, devi specificare subnetwork con una subnet che puoi utilizzare.

L'esempio seguente mostra come eseguire la pipeline dalla riga di comando mediante l'API REST. L'esempio specifica una subnet. Puoi anche specificare la rete.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

Vai

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

API

Se esegui un modello Dataflow utilizzando l'API REST, aggiungi network o subnetwork, o entrambi, all'oggetto environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Sostituisci quanto segue:

  • JOB_NAME: il nome del job Dataflow (solo API)
  • INPUT_PATH: il percorso della sorgente
  • HOST_PROJECT_ID: l'ID progetto host
  • REGION: una regione Dataflow, ad esempio us-central1
  • STORAGE_BUCKET: il bucket di archiviazione
  • SUBNETWORK_NAME: il nome della sottorete Compute Engine

Disattivare un indirizzo IP esterno

Per disattivare un indirizzo IP esterno, consulta Configurare l'accesso a internet e le regole firewall.