Conectar um ambiente a uma rede VPC

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página explica como o ambiente pode acessar uma rede VPC no Cloud Composer 3, fornece instruções para conectar um ambiente a uma rede VPC e descreve como desativar uma conexão configurada anteriormente.

Sobre o acesso à rede VPC

No Cloud Composer 3, é possível ativar o acesso a uma rede VPC para um ambiente.

Se você ativar o acesso a uma rede VPC para um ambiente:

  • Os componentes do Airflow do seu ambiente podem acessar endpoints de rede particulares na rede VPC. Por exemplo, o código do DAG pode acessar recursos localizados na rede VPC por uma conexão do Airflow configurada.

  • Se o ambiente usar redes IP particulares, todo o tráfego interno será roteado para a rede VPC, exceto o tráfego para APIs, serviços e domínios do Google que estão disponíveis para ambientes de IP particular com o Acesso privado do Google.

  • Dependendo de como você configura sua rede VPC, um ambiente de IP particular pode ter acesso à Internet pela rede VPC.

  • As Zonas de DNS particulares definidas na rede VPC estão disponíveis automaticamente para os componentes do Airflow do seu ambiente.

  • O ambiente reserva dois endereços IP na sub-rede VPC.

O Cloud Composer usa um anexo de rede para conectar seu ambiente a uma rede VPC:

  • Se você especificar uma rede VPC e uma sub-rede, o Cloud Composer vai criar um novo anexo de rede no seu projeto. Esse anexo é excluído depois que você exclui um ambiente, desativa a conexão com uma rede VPC ou substitui os parâmetros de conexão da VPC.

  • Se você especificar um anexo de rede existente, ele precisa estar localizado no mesmo projeto do ambiente. Esse anexo não é excluído depois que você exclui um ambiente, desativa a conexão ou substitui os parâmetros de conexão da VPC.

  • Em redes VPC compartilhadas:

    • Verifique se você configurou a rede VPC compartilhada para o Cloud Composer. Consulte Configurar a VPC compartilhada para informações sobre como configurar projetos e permissões para o Cloud Composer.

    • Depois que a rede VPC compartilhada for configurada, você poderá conectar seu ambiente a uma rede VPC no projeto host. Se você usar um anexo de rede existente, ele precisa ser criado no projeto de serviço (onde o ambiente está localizado) e anexado a uma rede VPC compartilhada.

Sobre o intervalo de IP interno do ambiente

Os ambientes do Cloud Composer 3 exigem vários endereços IP para os componentes executados no projeto do locatário, como o cluster do ambiente e o proxy do Cloud SQL. Esses endereços IP são tomados do intervalo de IP interno do ambiente.

  • O intervalo de IP interno padrão é 100.64.128.0/20.

  • É possível especificar um intervalo de IP interno diferente ao criar um ambiente. Esse intervalo precisa usar uma máscara /20.

  • Não é possível mudar o intervalo de IP interno de um ambiente atual.

O intervalo de IP interno interage com a rede VPC das seguintes maneiras:

  • O intervalo de IP interno não pode entrar em conflito com a sub-rede da VPC à qual o ambiente do Cloud Composer está conectado. Não é possível ativar uma conexão com uma sub-rede da VPC que se sobrepõe ao intervalo de IP interno.

  • Se o intervalo de IP interno de um ambiente se sobrepor aos intervalos de rede VPC, os endpoints da rede VPC com endereços IP sobrepostos não poderão ser acessados pelo ambiente.

    Por exemplo, se o intervalo interno for 100.64.128.0/20, qualquer solicitação para o endpoint 100.64.128.1 na rede VPC vai falhar porque a solicitação não sai do projeto do locatário.

  • O intervalo de IP interno não está reservado. É possível usar o mesmo intervalo de IP interno para vários ambientes sem nenhuma configuração adicional, porque as redes VPC internas usadas por ambientes diferentes são separadas.

  • É possível usar os endereços IP do intervalo interno para outras finalidades, desde que as DAGs e tarefas no seu ambiente não façam solicitações a eles.

Conectar-se a uma rede VPC

Console

  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente.

  4. Na seção Configuração de rede, encontre o item Anexo de rede e clique em Editar.

  5. Na caixa de diálogo Anexo de rede:

    • Para criar um novo anexo de rede, na lista Anexo de rede, selecione Criar um novo anexo de rede. Nas listas Rede e Sub-rede, selecione uma rede VPC e uma sub-rede.

    • Para usar um anexo de rede existente, selecione um na lista Anexo de rede.

  6. Clique em Salvar.

gcloud

Os seguintes argumentos da CLI do Google Cloud especificam parâmetros de conexão de rede VPC:

  • --network: ID da rede VPC.
  • --subnetwork: ID da sub-rede VPC.
  • --network-attachment: use um anexo de rede existente.

Novo anexo de rede

Para conectar seu ambiente a uma rede VPC usando uma nova vinculação de rede, execute o seguinte comando da CLI do Google Cloud:

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente
  • LOCATION: a região em que o ambiente está localizado
  • NETWORK_ID: ID da rede VPC
  • SUBNETWORK_ID: ID da sub-rede VPC

Exemplo:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network projects/example-project/global/networks/example-network \
  --subnetwork projects/example-project/regions/us-central1/subnetworks/example-subnetwork

Anexo de rede atual

Para conectar seu ambiente a uma rede VPC usando uma nova vinculação de rede, execute o seguinte comando da CLI do Google Cloud:

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network-attachment NETWORK_ATTACHMENT_ID

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente
  • LOCATION: a região em que o ambiente está localizado
  • NETWORK_ATTACHMENT_ID: o anexo de rede no formato projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Exemplo:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment

API

  1. Crie uma solicitação de API environments.patch.

  2. Nesta solicitação:

    • Para criar um novo anexo de rede:

      1. No parâmetro updateMask, especifique a máscara config.node_config.network,config.node_config.subnetwork.

      2. No corpo da solicitação, nos campos network e subnetwork, especifique os IDs da rede VPC e da sub-rede.

    • Para usar um anexo de rede atual:

      1. No parâmetro updateMask, especifique a máscara config.node_config.composer_network_attachment.

      2. No corpo da solicitação, forneça um valor para o anexo de rede existente no formato projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Exemplo (novo anexo de rede):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "projects/example-project/global/networks/example-network",
    "subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
  }
}

Exemplo (conexão de rede atual):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.composer_network_attachment

"config": {
  "nodeConfig": {
    "composerNetworkAttachment": "projects/example-project/regions/us-central1/networkAttachments/example-network-attachment"
  }
}

Terraform

Os campos a seguir no bloco node_config especificam parâmetros de conexão da rede VPC:

  • network: ID da rede VPC.
  • subnetwork: ID da sub-rede VPC.
  • composer_network_attachment: use um anexo de rede existente.

Novo anexo de rede

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      network = NETWORK_ID
      subnetwork = SUBNETWORK_ID
    }

  }
}

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente;
  • LOCATION: a região em que o ambiente está localizado.
  • NETWORK_ID: ID da rede VPC
  • SUBNETWORK_ID: ID da sub-rede VPC

Exemplo (novo anexo de rede):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      network = "projects/example-project/global/networks/example-network"
      subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
    }

    ... other configuration parameters
  }
}

Anexo de rede atual

Como resultado, o ambiente não vai mais usar o anexo. Para resolver isso, verifique se o Terraform ignora as mudanças no parâmetro producer_accept_lists do anexo, conforme abaixo:

resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

Em seguida, especifique esse anexo para um ambiente. Também é possível especificar um anexo que não é gerenciado no Terraform. Confira o exemplo.

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"
  config {
    node_config {
      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
    }
    # ... other configuration parameters
  }
}

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente;
  • LOCATION: a região em que o ambiente está localizado.
  • NETWORK_ATTACHMENT_ID: o ID do anexo de rede.

Exemplo (conexão de rede atual):

resource "google_compute_network_attachment" "example" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      # Attachment is managed in Terraform:

      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id

      # Attachment is not managed in Terraform:

      # composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
    }
    # ... other configuration parameters
  }
}

Desativar a conexão com uma rede VPC

Console

  1. No console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Acesse a guia Configuração do ambiente.

  4. Na seção Configuração de rede, encontre o item Anexo de rede e clique em Editar.

  5. Na caixa de diálogo Anexo de rede, selecione Nenhum e clique em Salvar.

gcloud

Os argumentos --disable-vpc-connectivity desativam a conexão de rede VPC do seu ambiente:

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-vpc-connectivity

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente
  • LOCATION: a região em que o ambiente está localizado

Exemplo:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --disable-vpc-connectivity

API

  1. Crie uma solicitação de API environments.patch.

  2. Nesta solicitação:

    1. No parâmetro updateMask, especifique a máscara config.node_config.network,config.node_config.subnetwork.

    2. No corpo da solicitação, nos campos network e subnetwork, especifique valores vazios.

Exemplo:

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "",
    "subnetwork": ""
  }
}

Terraform

Não é possível desconectar uma rede VPC usando o Terraform. Em vez disso, é possível anexar uma rede VPC diferente ou desconectar a rede usando outras ferramentas, como a CLI do Google Cloud.

A seguir