Especificar uma rede e sub-rede

Este documento explica como especificar uma rede ou uma sub-rede ou ambas as opções ao executar jobs do Dataflow.

Neste documento, você precisa saber como criar redes e sub-redes do Google Cloud. Neste documento, também é necessário conhecer os termos de rede discutidos na próxima seção.

Terminologia de rede do Google Cloud

  • Rede VPC. Uma rede VPC, algumas vezes chamada apenas de rede, fornece conectividade para recursos em um projeto.

    Para saber mais sobre a VPC, consulte a visão geral da rede VPC.

  • Rede VPC compartilhada. 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 saber mais sobre VPC compartilhada, acesse Visão geral da VPC compartilhada.

  • VPC Service Controls. O VPC Service Controls do Dataflow ajuda a proteger os recursos e serviços do 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.

Rede e sub-rede para um job do Dataflow

Ao criar um job do Dataflow, você pode especificar uma rede, uma sub-rede ou as duas opções.

Veja as diretrizes abaixo:

  • Quando estiver em dúvida sobre qual parâmetro usar, especifique apenas o parâmetro de sub-rede. O parâmetro de rede é especificado implicitamente para você.

  • Se você omitir os parâmetros de sub-rede e de rede, o Google Cloud presumirá que você pretende usar uma rede VPC de modo automático chamada default.

  • Se você omitir a sub-rede e os parâmetros de rede e não tiver uma rede chamada default no projeto, você receberá um erro.

Diretrizes para especificar um parâmetro de rede

  • Você pode selecionar uma rede de modo automático no seu projeto com o parâmetro de rede.

  • Só é possível especificar uma rede usando 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 selecionada é uma rede de modo automático.

    • Você é um administrador de projetos de serviços com permissões para envolvidos no 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.

Diretrizes para especificar um parâmetro de sub-rede

  • Caso você especifique uma subnetwork, o Dataflow escolherá a network para você. Portanto, quando você especificar uma subnetwork, omita o parâmetro network.

  • Para selecionar uma sub-rede específica em uma rede, use o parâmetro de sub-rede.

  • Especifique uma sub-rede usando um URL completo ou um caminho abreviado.

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

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

Diretrizes para especificar um parâmetro de sub-rede para VPC compartilhada

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

  • Caso a sub-rede esteja localizada em uma rede VPC compartilhada, use o URL completo.

  • Verifique se a conta de serviço do Dataflow e a conta de serviço do worker têm o papel de Usuário da rede do Compute atribuído à sub-rede especificada. Se você não ativar o papel, a seguinte mensagem de erro será exibida: Error: Message: Required 'compute.subnetworks.get' permission.

Exemplo de especificações de rede e sub-rede

Exemplo de um URL completo que especifica uma sub-rede:

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

Substitua:

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

Veja a seguir um URL de exemplo, em que o ID do projeto do host é my-cloud-project, a região é us-central1 e o nome da sub-rede é mysubnetwork:

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

Veja a seguir um exemplo de forma curta que especifica uma sub-rede:

regions/`REGION_NAME`/subnetworks/`SUBNETWORK_NAME`

Substitua:

  • REGION_NAME: o endpoint regional do job do Dataflow.
  • SUBNETWORK_NAME: o nome da sub-rede do Compute Engine.

Execute o pipeline com 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.

O exemplo a seguir mostra como executar o pipeline na linha de comando ou usando a API REST. O exemplo especifica uma sub-rede. Também é possível 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

API

Se você executar um modelo do Dataflow usando a API REST, adicionar network ou subnetwork ou ambos ao objeto environment.

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

Desativar um endereço IP externo

Para desativar um endereço IP externo, consulte Configurar o acesso à Internet e as regras de firewall.