Configuração de rede de cluster do Dataproc

Visão geral

As instâncias de máquina virtual do Compute Engine em um cluster do Dataproc que consistem em VMs mestras e workers precisam ser capazes de se comunicar usando ICMP, TCP (todas as portas) e UDP (todas as portas).

Requisito para regras de firewall

O Dataproc exige que você crie uma regra de permissão de entrada de firewall com as seguintes características:

  • A origem da regra precisa incluir as VMs do cluster. É possível definir uma origem usando intervalos de endereços IP ou identificar VMs usando tags de origem ou contas de serviço de origem. Se você omitir uma especificação de origem, a regra de firewall usará o intervalo 0.0.0.0/0 (qualquer endereço IP) como a origem. Se as VMs do Dataproc tiverem endereços IP externos, isso poderá aceitar o tráfego de qualquer lugar na Internet. Consequentemente, defina a origem para ser o mais restrita possível para atender às suas necessidades e proteger o cluster.

  • O destino da regra precisa identificar as VMs do cluster. O destino pode ser todas as VMs na rede VPC ou identificar VMs de destino específicas usando tags de meta ou contas de serviço de destino.

  • A regra precisa incluir os seguintes protocolos e portas: TCP (todas as portas, de 0 a 65535), UDP (todas as portas, de 0 a 65535) e ICMP.

    gcloud compute firewall-rules create my-subnet-firewall-rule --allow tcp
    
    É melhor especificar uma regra de permissão de entrada de firewall com um intervalo de origem específico ou identificar VMs do Google Cloud por tag de rede ou conta de serviço. Consulte a visão geral das regras de firewall para mais informações.

Como definir o intervalo de IP de origem

É possível definir o intervalo de IP de origem ao criar uma regra de firewall no Console do Google Cloud ou usando a ferramenta de linha de comando gcloud.

Console

Use a página Criar regra de firewall do Console do Cloud para criar uma regra de firewall com um intervalo de IP de origem especificado.

Comando gcloud

Use o comando gcloud compute firewall-rules create para criar uma regra de firewall com um intervalo de IP de origem especificado.

gcloud compute firewall-rules create "tcp-rule" --allow tcp:80 \
    --source-ranges="10.0.0.0/22,10.0.0.0/14" \
    --description="Narrowing TCP traffic"

Configuração de rede padrão do cluster do Dataproc

Ao criar um cluster do Dataproc, você pode aceitar a rede padrão do cluster.

Rede padrão

Veja um snapshot do Console do Google Cloud que mostra a rede padrão selecionada na página Criar um cluster do Dataproc.

Após a criação do cluster, a página de instâncias de VM do Console do Google Cloud → Detalhes da rede mostram as regras de firewall aplicáveis às instâncias no cluster. Se você usar uma [rede padrão]/vpc/docs/vpc#default-network), ela incluirá uma regra de firewall default-allow-internal pré-preenchida que permite a entrada do intervalo de origem 10.128.0.0/9. Se você excluir essa regra de firewall predefinida ou usar uma rede VPC diferente da rede padrão, o tráfego de entrada será bloqueado pela regra implícita "negar entrada". Nessas situações, crie uma regra de firewall de permissão de entrada que permita o tráfego para todas as portas TCP e UDP de instâncias no cluster. Seu administrador de rede ou segurança pode consultar a visão geral das regras de firewall para mais informações.

Crie uma rede VPC

Você pode especificar sua própria rede Virtual Private Cloud (VPC) ao criar um cluster do Dataproc. Para isso, você precisa criar uma rede VPC com regras de firewall. Em seguida, quando o cluster for criado, associe a rede ao cluster.

Como criar uma rede VPC

Você pode criar uma rede VPC no Console do Cloud ou usando a ferramenta de linha de comando gcloud compute networks create. Crie uma rede VPC em modo automático ou uma em modo personalizado (redes chamadas "auto" e "custom", respectivamente, abaixo). Uma rede automática é configurada automaticamente com sub-redes em cada região do Compute Engine. As redes personalizadas não são configuradas automaticamente com sub-redes. Você precisa criar uma ou mais sub-redes em uma ou mais regiões do Compute Engine ao criar a rede personalizada. Para ver mais informações, consulte Tipos de redes VPC.

Veja as opções disponíveis quando você cria uma rede automática e personalizada no Console do Cloud.

Automático

A captura de tela do Console do Cloud, abaixo, mostra os campos do Console do Cloud preenchidos para a criação automática de sub-redes (uma rede VPC de modo automático). É preciso selecionar uma ou mais regras de firewall. A regra network-name-allow-internal, que abre as portas udp:0-65535;tcp:0-65535;icmp, deve ser selecionada para ativar o acesso total à rede IP interna entre instâncias de VM na rede. Você também pode selecionar a regra network-name-allow-ssh para abrir a porta SSH padrão 22 para permitir conexões SSH com a rede.

Personalizado

Se você selecionar sub-redes personalizadas ao criar uma rede (uma rede VPC de modo personalizado), será preciso especificar a região e o intervalo de endereços IP particulares de cada sub-rede. Para ativar o acesso interno total entre as VMs na rede, especifique o intervalo de endereços IP 10.0.0.0/8. Se apropriado, defina um intervalo mais restrito, como 10.128.0.0/16.

Observe que as regras de firewall são fornecidas para sub-redes personalizadas após a criação da rede. Novamente, para ativar o acesso total à rede entre as VMs de sua rede, selecione ou crie uma regra de firewall que abra as portas udp:0-65535;tcp:0-65535;icmp, conforme mostrado na captura de tela do Console do Cloud abaixo.

Como criar um cluster que usa a rede VPC

Comando gcloud

Use o comando gcloud dataproc clusters create do SDK do Cloud com o sinalizador ‑‑network ou ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada.

Como usar a sinalização ‑‑network
Use a sinalização ‑‑network para criar um cluster que usará uma sub-rede com o mesmo nome da rede na região em que o cluster será criado.

gcloud dataproc clusters create my-cluster \
    --network network-name \
    --region=region \
    ... other args ...

Por exemplo, como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, é possível passar o nome da rede automática para o sinalizador network (‑‑network auto-net-name) para criar um cluster que usará a sub-rede automática na região do cluster.

Como usar a sinalização ‑‑subnet
Use a sinalização ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada na região em que o cluster será criado. É preciso passar à sinalização ‑‑subnet o caminho completo do recurso da sub-rede que o cluster usará.

gcloud dataproc clusters create cluster-name \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

É possível especificar o campo GceClusterConfig networkUri ou subnetworkUri como parte de uma solicitação clusters.create.

Exemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b"
    },
    ...

Console

Depois de criar uma rede VPC com regras de firewall que permitem o acesso total das VMs ao bucket de endereços IP privados da rede, você pode criar um cluster na página Console do Cloud→Criar cluster e selecionar sua rede usando o seletor de rede (expanda o cabeçalho Opções de workers, bucket, rede, versão, inicialização e acesso preemptivos para acessar o seletor).

Depois de escolher a rede, o seletor de sub-rede exibe as sub-redes disponíveis na região selecionada para a criação do cluster. Se uma sub-rede não estiver disponível na região, a mensagem "Nenhuma sub-rede nesta região" será exibida no seletor de sub-redes.

Veja abaixo uma captura de tela que mostra os seletores de rede e de sub-rede na página Criar um cluster do Dataproc do Console do Cloud. Como mostrado, uma sub-rede personalizada em uma rede personalizada foi selecionada.

Como criar um cluster que use uma rede VPC em outro projeto

Um cluster do Dataproc pode usar uma rede VPC compartilhada participando como um projeto de serviço. Com uma VPC compartilhada, a rede VPC compartilhada é definida em um projeto diferente, chamado projeto de host. O projeto de host é disponibilizado para uso por membros do IAM em projetos de serviço anexados. Consulte Visão geral da VPC compartilhada para ver informações básicas.

Você criará seu cluster do Dataproc em um projeto. No cenário de VPC compartilhada, este projeto será um projeto de serviço. Você precisará fazer referência ao número desse projeto. Aqui está uma maneira de encontrar o número do projeto:

  1. Navegue até a guia Configurações da página de administrador e IAM.

  2. Na lista suspensa do projeto, na parte superior da página, selecione o projeto que você usará para criar o cluster do Dataproc.

  3. Anote o número do projeto:

Um membro do IAM que é um administrador de VPC compartilhada precisa realizar as etapas a seguir. Consulte as instruções para configurar a VPC compartilhada para ver informações básicas.

  1. Certifique-se de que o projeto de host da VPC compartilhada tenha sido ativado.

  2. Anexe o projeto Dataproc ao projeto host.

  3. Configure uma ou ambas as contas de serviço a seguir para aplicar o papel Usuário de rede ao projeto de host. O Dataproc tentará usar a primeira conta de serviço, voltando para a conta de serviço das APIs do Google, se necessário.

  4. Navegue até a guia IAM da página "IAM e administrador".

  5. Use a lista suspensa do projeto na parte superior da página para selecionar o projeto host.

  6. Clique em ADICIONAR. Repita essas etapas para adicionar ambas as contas de serviço:

    1. Adicione a conta de serviço ao campo Membros.

    2. No menu Papéis, selecione Compute Engine > Usuário da rede do Compute.

    3. Clique em Adicionar.

Quando as duas contas de serviço tiverem o papel de usuário da rede no projeto host, você poderá criar um cluster que use sua rede VPC.

Criar um cluster do Dataproc somente com endereços IP internos

É possível criar um cluster do Dataproc isolado da Internet pública, cujas instâncias de VM se comunicam por meio de uma sub-rede de IP privada (as instâncias de VM não terão endereços IP públicos). Para isso, a sub-rede do cluster precisa ter Acesso privado do Google ativado para permitir que os nós do cluster acessem APIs e serviços do Google, como o Cloud Storage, por IPs internos.

Comando gcloud

É possível criar um cluster do Dataproc somente com endereços IP internos usando o comando gcloud dataproc clusters create com o sinalizador ‑‑no-address.

Como usar as sinalizações ‑‑no-address e ‑‑network
Use a sinalização ‑‑no-address com a sinalização ‑‑network para criar um cluster que usará uma sub-rede com o mesmo nome da rede na região em que o cluster será criado.

gcloud dataproc clusters create my-cluster \
    --no-address \
    --network network-name \
    --region=region \
    ... other args ...

Por exemplo, como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, é possível passar o nome da rede automática para o sinalizador network (‑‑network auto-net-name) para criar um cluster que usará a sub-rede automática na região do cluster.

Como usar as sinalizações ‑‑no-address e ‑‑subnet
Use a sinalização ‑‑no-address com as sinalizações ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada na região onde o cluster será criado. É preciso passar à sinalização ‑‑subnet o caminho completo do recurso da sub-rede que o cluster usará.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

Defina o campo GceClusterConfig internalIpOnly como "true" como parte de uma solicitação clusters.create para ativar somente endereços IP internos.

Exemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Console

É possível criar um cluster do Dataproc com o Acesso privado do Google ativado na página Criar um cluster do Dataproc do Console do Cloud. Na parte inferior da página, expanda o link Opções de trabalho, bucket, rede, versão, inicialização e acesso preemptivos e clique em Apenas IP interno para ativar esse recurso para o cluster.

Dataproc e redes VPC-SC

Com o VPC Service Controls, os administradores podem definir um perímetro de segurança em torno dos recursos dos serviços gerenciados pelo Google para controlar a comunicação entre esses serviços.

Observe as seguintes limitações e estratégias ao usar redes VPC-SC com clusters do Dataproc: