Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Nesta página, explicamos como seu ambiente pode acessar uma rede VPC no Cloud Composer 3, fornecemos instruções para conectar um ambiente a uma rede VPC e descrevemos como desativar uma conexão configurada anteriormente.
Se você quiser ativar ou desativar o acesso à Internet para os componentes do Airflow do seu ambiente, consulte Mudar o tipo de rede do ambiente (IP privado ou público).
Se você quiser desativar ou ativar o acesso à Internet apenas ao instalar pacotes PyPI, consulte Configurar o acesso à Internet ao instalar pacotes PyPI.
Se você quiser configurar a rede VPC compartilhada, consulte Configurar a VPC compartilhada para informações sobre como configurar projetos e permissões.
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 no seu ambiente podem acessar endpoints de rede particular na sua 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 rede IP privada, todo o tráfego interno será roteado para sua rede VPC, exceto o tráfego para APIs, serviços e domínios do Google que estão disponíveis para ambientes de IP privado pelo Acesso privado do Google.
Dependendo da configuração da rede VPC, um ambiente de IP privado pode acessar a Internet pela rede VPC.
As zonas de DNS particular definidas na sua rede VPC estão disponíveis automaticamente para os componentes do Airflow do ambiente.
O ambiente reserva dois endereços IP na sua sub-rede VPC e usa dois endereços IP extras durante a manutenção e os upgrades. Verifique se há quatro endereços IP por ambiente disponíveis 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 e uma sub-rede VPC, 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 VPC.
Se você especificar um anexo de rede atual, ele precisará 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.
Na rede VPC compartilhada:
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 do projeto host. Se você usar um anexo de rede atual, ele precisará ser criado no projeto de serviço (onde o ambiente está localizado) e anexado a uma rede VPC compartilhada.
Limitações do peering de DNS transitivo no Cloud Composer 3
As limitações do peering de DNS transitivo se aplicam a um ambiente do Cloud Composer 3 da seguinte maneira:
- O Cloud DNS tem uma limitação de um salto transitivo, o que significa que apenas dois saltos são aceitos no total.
- No Cloud Composer 3, os componentes do ambiente são executados no projeto do locatário e se comunicam com o projeto em que o ambiente está localizado por um peering de VPC. O salto transitivo é usado pelo peering de VPC do projeto de locatário. Assim, é possível usar apenas um salto no total.
Sobre o intervalo de IP interno do ambiente
Os ambientes do Cloud Composer 3 exigem vários endereços IP para os componentes que são executados no projeto do locatário, como o cluster do ambiente e o proxy do Cloud SQL. Esses endereços IP são extraídos 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 sua rede VPC das seguintes maneiras:
O intervalo de IP interno não pode entrar em conflito com a sub-rede VPC a que o ambiente do Cloud Composer está conectado. Não é possível ativar uma conexão com uma sub-rede VPC que se sobrepõe ao intervalo de IP interno.
Se o intervalo de IP interno de um ambiente se sobrepuser aos intervalos da rede VPC, os endpoints da rede VPC com endereços IP sobrepostos não poderão ser acessados do ambiente.
Por exemplo, se o intervalo interno for
100.64.128.0/20
, qualquer solicitação ao endpoint100.64.128.1
na sua 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 configuração adicional, porque as redes VPC internas usadas por ambientes diferentes são separadas.
Você pode usar os endereços IP do intervalo interno para outras finalidades, desde que os DAGs e as tarefas no seu ambiente não façam solicitações a eles.
Conectar-se a uma rede VPC
Console
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Configuração do ambiente.
Na seção Configuração de rede, encontre o item Anexação de rede e clique em Editar.
Na caixa de diálogo Anexação de rede:
Para criar um anexo de rede, na lista Anexo de rede, selecione Criar um anexo de rede. Nas listas Rede e Sub-rede, selecione uma rede VPC e uma sub-rede.
Para usar um anexo de rede, na lista Anexo de rede, selecione um anexo.
Clique em Salvar.
gcloud
Os argumentos a seguir da Google Cloud CLI 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 um novo anexo de rede, execute o seguinte comando da Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID
Substitua:
ENVIRONMENT_NAME
: o nome do ambienteLOCATION
: a região em que o ambiente está localizado.NETWORK_ID
: ID da rede VPCSUBNETWORK_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 um novo anexo de rede, execute o seguinte comando da Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network-attachment NETWORK_ATTACHMENT_ID
Substitua:
ENVIRONMENT_NAME
: o nome do ambienteLOCATION
: a região em que o ambiente está localizado.NETWORK_ATTACHMENT_ID
: o anexo de rede no formatoprojects/{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
Crie uma solicitação de API
environments.patch
.Nesta solicitação:
Para criar um anexo de rede:
No parâmetro
updateMask
, especifique a máscaraconfig.node_config.network,config.node_config.subnetwork
.No corpo da solicitação, nos campos
network
esubnetwork
, especifique os IDs da rede VPC e da sub-rede.
Para usar um anexo de rede atual:
No parâmetro
updateMask
, especifique a máscaraconfig.node_config.composer_network_attachment
.No corpo da solicitação, forneça um valor para o anexo de rede atual 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 (anexo 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 VPCSUBNETWORK_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, da seguinte maneira:
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. Você também pode especificar um anexo que não é gerenciado 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:
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 (anexo 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
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Acesse a guia Configuração do ambiente.
Na seção Configuração de rede, encontre o item Anexação de rede e clique em Editar.
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 ambienteLOCATION
: a região em que o ambiente está localizado.
Exemplo:
gcloud beta composer environments update example-environment \
--location us-central1 \
--disable-vpc-connectivity
API
Crie uma solicitação de API
environments.patch
.Nesta solicitação:
No parâmetro
updateMask
, especifique a máscaraconfig.node_config.network,config.node_config.subnetwork
.No corpo da solicitação, nos campos
network
esubnetwork
, 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 remover uma rede VPC usando o Terraform. Em vez disso, é possível anexar outra rede VPC ou desconectar a rede usando outras ferramentas, como a Google Cloud CLI.
A seguir
- Mudar o tipo de rede do ambiente (IP privado ou público)
- Configurar o acesso à Internet ao instalar pacotes PyPI