Especifique uma rede e uma sub-rede

Este documento explica como especificar uma rede ou uma sub-rede, ou ambas as opções, quando executa tarefas do Dataflow.

Para seguir os passos, tem de saber como criar redes e sub-redes da Google Cloud Platform. Também tem de estar familiarizado com os termos da rede abordados na secção seguinte.

A rede default tem configurações que permitem a execução de tarefas do Dataflow. No entanto, outros serviços também podem usar esta rede. Certifique-se de que as alterações à rede default são compatíveis com todos os seus serviços. Em alternativa, crie uma rede separada para o Dataflow.

Para mais informações sobre como resolver problemas de rede, consulte o artigo Resolva problemas de rede do Dataflow.

Terminologia de rede da Google Cloud Platform

  • Rede da VPC. Uma rede VPC é uma versão virtual de uma rede física que é implementada na rede de produção da Google. Por vezes, denominada rede, uma VPC oferece conetividade para recursos num projeto.

    Para saber mais acerca da VPC, consulte o artigo Redes VPC.

  • Rede VPC partilhada. Quando usa a VPC partilhada, designa um projeto como um projeto anfitrião e anexa-lhe um ou mais projetos de serviço. As redes VPC no projeto anfitrião são denominadas redes VPC partilhadas. Se um administrador da VPC partilhada definir a sua função como administrador do projeto de serviço, tem autorização para usar, pelo menos, algumas das sub-redes nas redes do projeto anfitrião.

    Para saber mais sobre a VPC partilhada, consulte o artigo VPC partilhada.

  • VPC Service Controls. Os VPC Service Controls do Dataflow ajudam a proteger contra ações acidentais ou direcionadas por entidades externas ou internas, o que ajuda a minimizar os riscos de exfiltração de dados injustificados. Pode usar os VPC Service Controls para criar perímetros que protejam os recursos e os dados dos serviços que especificar explicitamente.

    Para saber mais acerca do VPC Service Controls, consulte o artigo Vista geral do VPC Service Controls. Para saber mais sobre as limitações quando usa o Dataflow com os VPC Service Controls, consulte o artigo Produtos suportados e limitações.

  • Regras de firewall. Use regras de firewall para permitir ou negar tráfego de e para as suas VMs. Para mais informações, consulte o artigo Configure o acesso à Internet e as regras de firewall.

Rede e sub-rede para uma tarefa do Dataflow

Quando cria um trabalho do Dataflow, pode especificar uma rede, uma sub-rede ou ambas as opções.

Considere as seguintes diretrizes:

  • Se não tiver a certeza de que parâmetro usar, especifique apenas o parâmetro subnetwork. Em seguida, o parâmetro de rede é especificado implicitamente para si.

  • Se omitir os parâmetros de sub-rede e de rede,o Google Cloud Google Cloud assume que pretende usar uma rede VPC de modo automático denominada default. Se não tiver uma rede com o nome default no seu projeto, tem de especificar uma rede ou uma sub-rede alternativa.

Diretrizes para especificar um parâmetro de rede

  • Para selecionar uma rede VPC de modo automático no seu projeto, use o parâmetro de rede. Para mais informações, consulte o artigo Crie uma rede VPC de modo automático.

  • Pode especificar uma estação usando apenas o respetivo nome e não o URL completo.

  • Só pode usar o parâmetro de rede para selecionar uma rede de VPC partilhada se ambas as seguintes condições forem verdadeiras:

  • Para todos os outros casos, tem de especificar uma sub-rede.

Diretrizes para especificar um parâmetro de sub-rede

  • Se especificar uma sub-rede, o Dataflow escolhe a rede por si. Por conseguinte, quando especificar uma sub-rede, pode omitir o parâmetro de rede.

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

  • Especifique uma subrede através de um URL completo ou de um caminho abreviado. Se a sub-rede estiver localizada numa rede VPC partilhada, tem de usar o URL completo.

  • Tem de selecionar uma sub-rede na mesma região que a zona onde executa os seus trabalhadores do Dataflow.

  • Tem de especificar o parâmetro de sub-rede nas seguintes situações:

    • A sub-rede que especificar está numa rede VPC de modo personalizado.

    • É administrador do projeto de serviço com autorizações ao nível da sub-rede para uma sub-rede específica num projeto anfitrião de VPC partilhada.

  • O número de endereços IP disponíveis é um limite para o número de trabalhadores do Dataflow que podem ser criados. Por exemplo, se o intervalo IPv4 da sub-rede for 10.0.0.0/24, isto fornece 252 endereços IP utilizáveis para VMs de trabalho. Certifique-se de que o espaço de endereços IP é suficientemente grande para as cargas de trabalho esperadas, incluindo a permissão para dimensionamento automático horizontal. Use os testes de carga para validar as suas suposições.

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

  • Quando especificar o URL da sub-rede para a VPC partilhada, certifique-se de que HOST_PROJECT_ID é o projeto no qual a VPC está alojada.

  • Se a sub-rede estiver localizada numa rede VPC partilhada, tem de usar o URL completo. Veja um exemplo de um URL completo que especifica uma sub-rede.

  • Certifique-se de que a sub-rede da VPC partilhada é partilhada com a conta de serviço do Dataflow e tem a função de utilizador da rede de computação atribuída na sub-rede especificada. A função de utilizador da rede de computação tem de ser atribuída à conta de serviço do Dataflow no projeto anfitrião.

    1. Na Google Cloud consola, aceda à página VPC partilhada.

      Aceda à página VPC partilhada

    2. Selecione um projeto anfitrião.

    3. Na secção Acesso individual à sub-rede, selecione a sua sub-rede. O painel Autorizações ao nível da sub-rede apresenta as autorizações para esta sub-rede. Pode ver se à sub-rede da VPC está atribuída a função de utilizador da rede de computação.

    4. Para conceder autorizações, no painel Autorizações ao nível da sub-rede, clique em Adicionar principal.

    Se a rede não for partilhada, quando tentar executar a tarefa, é apresentada a seguinte mensagem de erro: Error: Message: Required 'compute.subnetworks.get' permission. Para mais informações, consulte a secção Autorização "compute.subnetworks.get" necessária no artigo "Resolva problemas de autorizações do Dataflow".

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

O exemplo seguinte mostra 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 o seguinte:

  • HOST_PROJECT_ID: o ID do projeto anfitrião
  • REGION_NAME: a região da sua tarefa do Dataflow
  • SUBNETWORK_NAME: o nome da sua sub-rede do Compute Engine

Segue-se um exemplo de um URL em que o ID do projeto anfitrião é 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

Segue-se um exemplo de um formulário abreviado que especifica uma sub-rede:

regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Substitua o seguinte:

  • REGION_NAME: a região da sua tarefa do Dataflow
  • SUBNETWORK_NAME: o nome da sua sub-rede do Compute Engine

Execute o pipeline com a rede especificada

Se quiser usar uma rede diferente da rede predefinida criada pelo Google Cloud, na maioria dos casos, tem de especificar a sub-rede. A rede é inferida automaticamente a partir da sub-rede que especificar. Para mais informações, consulte as diretrizes para especificar um parâmetro de rede neste documento.

O exemplo seguinte mostra como executar o pipeline a partir da linha de comandos ou através da API REST. Este exemplo especifica uma rede.

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

Go

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 estiver a executar um modelo do Dataflow através da API REST, adicione 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": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Substitua o seguinte:

  • JOB_NAME: o nome da sua tarefa do Dataflow (apenas API)
  • INPUT_PATH: o caminho para a sua fonte
  • HOST_PROJECT_ID: o ID do projeto anfitrião
  • REGION: uma região do Dataflow, como us-central1
  • STORAGE_BUCKET: o contentor de armazenamento
  • NETWORK_NAME: o nome da sua rede do Compute Engine

Execute o pipeline com a sub-rede especificada

Se for um administrador do projeto de serviço que só tem autorização para usar sub-redes específicas numa rede de VPC partilhada, tem de especificar o parâmetro subnetwork com uma sub-rede que tenha autorização para usar.

O exemplo seguinte mostra como executar o pipeline a partir da linha de comandos ou através da API REST. O exemplo especifica uma sub-rede. Também pode especificar a rede.

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

Go

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 estiver a executar um modelo do Dataflow através da API REST, adicione 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": "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"
    }
}

Substitua o seguinte:

  • JOB_NAME: o nome da sua tarefa do Dataflow (apenas API)
  • INPUT_PATH: o caminho para a sua fonte
  • HOST_PROJECT_ID: o ID do projeto anfitrião
  • REGION: uma região do Dataflow, como us-central1
  • STORAGE_BUCKET: o contentor de armazenamento
  • SUBNETWORK_NAME: o nome da sua sub-rede do Compute Engine

Desative um endereço IP externo

Para desativar um endereço IP externo, consulte o artigo Configure o acesso à Internet e as regras da firewall.