Como especificar rede e sub-rede

Esta página explica como especificar uma rede e uma sub-rede quando você executa jobs do Dataflow.

VPC e VPC compartilhada

Uma rede VPC, algumas vezes chamada apenas de rede, fornece conectividade para recursos em um projeto. Para saber mais sobre as redes VPC, consulte a visão geral das redes VPC.

Em uma organização, a rede VPC compartilhada é aquela que existe em um projeto separado, chamado de projeto de host.. Caso você tenha sido designado como administrador de projeto de serviço por um administrador de VPC compartilhada, terá a permissão de usar pelo menos algumas das sub-redes nas redes do projeto de host. Para informações básicas sobre a VPC compartilhada, consulte a Visão geral da VPC compartilhada.

VPC Service Controls

O VPC Service Controls do Dataflow fornece mais segurança aos recursos e serviços do seu pipeline. Para saber mais sobre o VPC Service Controls, consulte a visão geral sobre ele.

Para saber mais sobre as limitações ao usar o Dataflow com o VPC Service Controls, consulte os produtos e limitações compatíveis.

Como especificar uma rede e uma sub-rede

Ao criar um job do Dataflow, você pode especificar uma rede ou uma sub-rede. Nas seções abaixo, você verá quando usar cada parâmetro.

Se você omitir os parâmetros de rede e sub-rede, o Google Cloud presumirá que você pretende usar uma rede VPC de modo automático com o nome default. Se você omitir os parâmetros de rede e sub-rede e não tiver uma rede chamada default no seu projeto, você receberá um erro.

Parâmetro de rede

É possível usar o parâmetro de rede para especificar uma rede de modo automático no projeto.

O parâmetro de rede pode ser usado para selecionar uma rede VPC compartilhada quando as duas condições forem verdadeiras:

  • A rede VPC compartilhada a ser selecionada é a de modo automático.
  • Você é um "Administrador" de projetos de serviços com permissões no nível de projeto em todo o projeto de host da VPC compartilhada. Isso quer dizer que um Administrador de VPC compartilhada concedeu a você o papel de Usuário de Rede para todo o projeto de host. Sendo assim, você tem permissão para usar todas as respectivas redes e sub-redes.

Para os demais casos, você precisa especificar uma sub-rede.

Parâmetro de sub-rede

Se você precisar selecionar uma sub-rede específica em uma rede, especifique o parâmetro subnetwork. Você precisa selecionar uma sub-rede na mesma região em que executa os workers do Dataflow. Por exemplo, especifique o parâmetro de sub-rede nas seguintes situações:

  • A sub-rede de que você precisa está em uma rede no modo personalizado.
  • Você é um Administrador de projetos de serviços com permissões de nível de sub-rede para uma sub-rede específica, em um projeto de host de VPC compartilhada.

É possível especificar uma sub-rede usando um URL completo ou um caminho abreviado. Caso a sub-rede esteja localizada em uma rede VPC compartilhada, use o URL completo.

  • URL completo:
    https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK
  • Forma abreviada:
    regions/REGION/subnetworks/SUBNETWORK

Substitua:

  • HOST_PROJECT_ID: ID do projeto host.
  • REGION: o endpoint regional do job do Dataflow.
  • SUBNETWORK: o nome da sub-rede do Compute Engine.

Se você especificar um subnetwork, o Dataflow escolherá network para você. Portanto, ao especificar um subnetwork, é possível omitir o parâmetro network.

O tamanho da sub-rede limita apenas o número de instâncias por número de endereços IP disponíveis. Esse dimensionamento não afeta o desempenho do VPC Service Controls do Dataflow.

Parâmetro IP público

O parâmetro IP público diz ao serviço do Dataflow para atribuir endereços IP públicos aos workers do Dataflow. Por padrão, o serviço do Dataflow atribui aos workers endereços IP públicos e privados. Quando você desativa os endereços IP públicos, o pipeline do Dataflow só pode acessar recursos nos seguintes locais:

Com os IPs públicos desativados, você ainda pode executar tarefas administrativas e de monitoramento. Você pode acessar seus workers usando o SSH por meio das opções listadas na lista anterior. No entanto, o pipeline não pode acessar a Internet e outras redes do Google Cloud, e os hosts da Internet não podem acessar seus workers do Dataflow.

A desativação de IPs públicos permite projetar melhor a infraestrutura de processamento de dados. Ao não utilizar endereços IP públicos para workers do Dataflow, você também diminui o número de endereços IP públicos contabilizados na sua cota de projetos do Google Cloud.

Se você desativar os IPs públicos, os jobs do Dataflow não poderão acessar APIs e serviços fora do Google Cloud que exijam acesso à Internet. Para informações sobre como configurar o acesso à Internet para jobs com IPs privados, leia Acesso à Internet para o Dataflow.

JAVA

Para desativar os IPs públicos:

  1. Ative o Acesso privado do Google para sua rede ou sub-rede.
  2. Nos parâmetros do job do Dataflow, especifique --usePublicIps=false e --network=NETWORK ou --subnetwork=SUBNETWORK.

PYTHON

Para desativar os IPs públicos, faça o seguinte:

  1. Siga as instruções de dependências do canal do Apache Beam para preparar todas as dependências de pacotes do Python.
  2. Ative o Acesso privado do Google para sua rede ou sub-rede.
  3. Nos parâmetros do job do Dataflow, especifique --no_use_public_ips e --network=NETWORK ou --subnetwork=SUBNETWORK.

VPC de outro projeto

Para permitir que os workers do Dataflow de diferentes projetos se comuniquem entre si, conceda permissões da conta de serviço do Dataflow aos papéis de usuário da rede do Compute e Agente de serviço do Compute Engine.

Ao especificar o URL da sub-rede, verifique se HOST_PROJECT_ID é o projeto em que a VPC está hospedada.

Como executar seu canal com rede e sub-rede especificadas

Os exemplos a seguir mostram como executar o pipeline no serviço do Dataflow com os parâmetros network e subnetwork especificados.

Se você for um administrador de projetos de serviços e tiver permissão apenas para usar sub-redes específicas em uma rede VPC compartilhada, precisa especificar o parâmetro subnetwork com uma sub-rede que você tem permissão para usar.

Como usar a linha de comando

O exemplo a seguir mostra como executar seu pipeline a partir da linha de comando, especificando a sub-rede. Especificar a sub-rede implicitamente especificará a rede.

JAVA

mvn compile exec:java \
  -Dexec.mainClass=com.example.WordCount \
  -Dexec.args="--project=my-cloud-project \
    --stagingLocation=gs://my-wordcount-storage-bucket/staging/ \
    --output=gs://my-wordcount-storage-bucket/output \
    --runner=DataflowRunner \
    --subnetwork=https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

PYTHON

python -m apache_beam.examples.wordcount \
  --project my-cloud-project \
  --runner DataflowRunner \
  --staging_location gs://my-wordcount-storage-bucket/staging \
  --temp_location gs://my-wordcount-storage-bucket/temp \
  --output gs://my-wordcount-storage-bucket/output \
  --subnetwork https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

Uso da API REST

No exemplo a seguir, mostramos como executar um modelo e especificar uma sub-rede. A especificação da sub-rede especificará implicitamente a rede.

Se você estiver executando um modelo do Dataflow usando a API REST, adicione network e/ou subnetwork ao objeto environment. Por exemplo:

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "my_job",
    "parameters": {
       "inputFile" : "gs://dataflow-samples/shakespeare/kinglear.txt",
       "output": "gs://my-wordcount-storage-bucket/output"
    },
    "environment": {
       "tempLocation": "gs://my-wordcount-storage-bucket/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork",
       "zone": "us-central1-f"
    }
}