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.

Especifique uma rede usando apenas o nome dela, e não o URL completo.

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 compartilhada

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

Verifique também se a conta de serviço do Dataflow e a conta de serviço do controlador têm a permissão do IAM "Usuário da rede do Compute" atribuída na sub-rede utilizada.

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"
    }
}