Associe um ambiente a uma rede de VPC

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Acerca do acesso à rede da VPC

No Cloud Composer 3, pode ativar o acesso a uma rede VPC para um ambiente.

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

  • Os componentes do Airflow do seu ambiente podem aceder a pontos finais de rede privada na sua rede VPC. Por exemplo, o código DAG pode aceder a recursos localizados na sua rede VPC através de uma ligação do Airflow configurada.

  • Se o seu ambiente usar redes IP privadas, todo o tráfego interno é encaminhado para a sua rede VPC, exceto o tráfego para APIs, serviços e domínios Google que estão disponíveis para ambientes de IP privado através do acesso privado à Google.

  • Consoante a forma como configura a sua rede VPC, um ambiente de IP privado pode obter acesso à Internet através da sua rede VPC.

  • As zonas DNS privadas definidas na sua rede VPC estão automaticamente disponíveis para os componentes do Airflow do seu ambiente.

  • O ambiente reserva dois endereços IP na sub-rede da VPC e usa dois endereços IP adicionais durante a manutenção e as atualizações. Certifique-se de que estão disponíveis quatro endereços IP por ambiente na sub-rede da VPC.

O Cloud Composer usa uma associação de rede para ligar o seu ambiente a uma rede de VPC:

  • Se especificar uma rede VPC e uma sub-rede, o Cloud Composer cria uma nova associação de rede no seu projeto. Este anexo é eliminado depois de eliminar um ambiente, desativar a ligação a uma rede da VPC ou substituir os parâmetros de ligação da VPC.

  • Se especificar um anexo de rede existente, tem de estar localizado no mesmo projeto que o ambiente. Este anexo não é eliminado depois de eliminar um ambiente, desativar a associação ou substituir os parâmetros de associação da VPC.

  • Na rede da VPC partilhada:

    • Certifique-se de que configurou a rede VPC partilhada para o Cloud Composer. Consulte o artigo Configure a VPC partilhada para ver informações sobre a configuração de projetos e autorizações para o Cloud Composer.

    • Depois de configurar a rede VPC partilhada, pode ligar o seu ambiente a uma rede VPC do projeto anfitrião. Se usar uma associação de rede existente, tem de ser criada no projeto de serviço (onde o ambiente está localizado) e associada a uma rede de VPC partilhada.

Limitações para peering de DNS transitivo no Cloud Composer 3

As limitações para a interligação de DNS transitiva aplicam-se a um ambiente do Cloud Composer 3 da seguinte forma:

  • O Cloud DNS tem uma limitação de um salto transitivo, o que significa que são suportados um total de dois saltos.
  • No Cloud Composer 3, os componentes do seu ambiente são executados no projeto de inquilino e comunicam com o projeto onde o ambiente está localizado através de um intercâmbio de VPC. O salto transitivo é usado pelo peering de VPC do projeto de inquilino, pelo que é possível usar apenas um salto no total.

Acerca do intervalo de IPs internos do ambiente

Os ambientes do Cloud Composer 3 requerem vários endereços IP para os respetivos componentes que são executados no projeto de inquilino, como o cluster do seu ambiente e o proxy do Cloud SQL. Estes endereços IP são retirados do intervalo de IP interno do ambiente.

  • O intervalo de IPs internos predefinido é 100.64.128.0/20.

  • Pode especificar um intervalo de IPs internos diferente quando cria um ambiente. Este intervalo tem de usar uma máscara /20.

  • Não pode alterar o intervalo de IPs internos de um ambiente existente.

O intervalo de IPs internos interage com a sua rede VPC das seguintes formas:

  • O intervalo de IPs interno não pode entrar em conflito com a sub-rede da VPC à qual o ambiente do Cloud Composer está ligado. Não é possível ativar uma ligação com uma sub-rede da VPC que se sobreponha ao intervalo de IPs internos.

  • Se o intervalo de IP interno de um ambiente se sobrepuser aos intervalos de rede da VPC, os pontos finais da rede da VPC que tenham endereços IP sobrepostos não são acessíveis a partir do ambiente.

    Por exemplo, se o intervalo interno for 100.64.128.0/20, qualquer pedido ao ponto final 100.64.128.1 na sua rede de VPC falha porque o pedido não sai do projeto de inquilino.

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

  • Pode usar os endereços IP do intervalo interno para outros fins, desde que os DAGs e as tarefas no seu ambiente não lhes façam pedidos.

Ligue-se a uma rede de VPC

Consola

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

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.

  3. Aceda ao separador Configuração do ambiente.

  4. Na secçã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 uma nova associação de rede, na lista Associação de rede, selecione Criar uma nova associação de rede. Nas listas Rede e Sub-rede, selecione uma rede de VPC e uma sub-rede.

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

  6. Clique em Guardar.

gcloud

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

  • --network: ID da rede da VPC.
  • --subnetwork: ID da sub-rede da VPC.
  • --network-attachment: em alternativa, use uma associação de rede existente.

Novo anexo de rede

Para ligar o seu ambiente a uma rede VPC através de uma nova associação de rede, execute o seguinte comando da CLI Google Cloud:

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

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do ambiente
  • LOCATION: a região onde o ambiente está localizado
  • NETWORK_ID: ID da rede VPC
  • SUBNETWORK_ID: ID da sub-rede da 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

Associação de rede existente

Para ligar o seu ambiente a uma rede VPC através de uma nova associação de rede, execute o seguinte comando da CLI Google Cloud:

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

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do ambiente
  • LOCATION: a região onde 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 um pedido de API environments.patch.

  2. Neste pedido:

    • Para criar uma nova associação de rede:

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

      2. No corpo do pedido, nos campos network e subnetwork, especifique os IDs da rede de VPC e da sub-rede.

    • Para usar uma associação de rede existente:

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

      2. No corpo do pedido, indique um valor para a associação de rede existente no formato projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Exemplo (associação de nova 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 (anexo de rede existente):

// 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 seguintes campos no bloco node_config especificam os parâmetros de ligação da rede VPC:

  • network: ID da rede da VPC.
  • subnetwork: ID da sub-rede da VPC.
  • composer_network_attachment: em alternativa, use uma associação 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 o seguinte:

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

Exemplo (associação de nova 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
  }
}

Associação de rede existente

Como resultado, o ambiente vai deixar de usar o anexo. Para resolver este problema, certifique-se de que o Terraform ignora as alterações ao parâmetro producer_accept_lists do anexo, da seguinte forma:

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

Posteriormente, especifique este anexo para um ambiente. Também pode especificar um anexo que não é gerido no Terraform. Consulte 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 o seguinte:

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

Exemplo (anexo de rede existente):

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

Desative a ligação a uma rede de VPC

Consola

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

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.

  3. Aceda ao separador Configuração do ambiente.

  4. Na secçã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 Guardar.

gcloud

Os argumentos --disable-vpc-connectivity desativam a ligação da rede da VPC do seu ambiente:

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

Substitua o seguinte:

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

Exemplo:

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

API

  1. Crie um pedido de API environments.patch.

  2. Neste pedido:

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

    2. No corpo do pedido, 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 desassociar uma rede VPC através do Terraform. Em alternativa, pode anexar outra rede VPC no lugar desta ou desanexar a rede através de outras ferramentas, como a CLI do Google Cloud.

O que se segue?