Conectividade de rede particular
Nesta página, descrevemos como configurar o Integration Connectors para que você se conecte de maneira particular ao seu aplicativos de back-end e pressupõe que você esteja familiarizado com os seguintes conceitos:- Nuvem privada virtual (VPC) do Google Cloud
- Private Service Connect
- Cloud DNS
- Conectores de integração
Os conectores de integração oferecem suporte à conectividade com seus back-ends hospedados em uma rede privada. Para ativar a conectividade particular, use o Private Service Connect (PSC). O PSC permite a conexão particular com serviços em diferentes redes.
No caso dos Integration Connectors, do ponto de vista da rede, você é o produtor de serviços, e o Integration Connectors é o consumidor do serviço. Como produtor de serviços, você precisa configurar um anexo de serviço do PSC que os conectores de integração podem usar para consumir o serviço. Quando o anexo de serviço estiver pronto, será possível configurar a conexão para consumir o anexo de serviço usando um anexo de endpoint.
Anexos de endpoint
Os anexos de endpoint são recursos de conectores de integração que permitem que as conexões estabeleçam conectividade com seus aplicativos de back-end usando os anexos de serviço do PSC.
A imagem a seguir mostra um anexo de endpoint que permite uma conexão para estabelecer conectividade com um aplicativo de back-end por meio de um anexo de serviço PSC:
É possível criar o anexo de endpoint como um endereço IP ou um nome de host.
Crie um anexo de endpoint como um endereço IP
Para criar um anexo de endpoint como um endereço IP, use o console do Cloud ou pela linha de comando (gcloud). .Console
Para criar um anexo de endpoint no console do Cloud, faça o seguinte:
- Abra a página Anexos de endpoint para o Integration Connectors.
- Clique em Criar. A página Criar anexo de endpoint é aberta.
- Insira valores nos seguintes campos:
- Nome: um nome para o anexo de endpoint. O nome precisa ser único. Pode haver nenhum outro anexo de endpoint com o mesmo nome, e não será possível alterá-lo posteriormente. O nome precisa começar com uma letra minúscula seguida por até 63 letras minúsculas. números ou hifens, mas não podem terminar com um hífen. O comprimento mínimo é 2.
- ID do anexo de serviço: nome do anexo de serviço do PSC que você já tem. criados.
- Descrição (opcional): insira uma descrição para o anexo do endpoint.
- (Opcional) Rótulos: insira os rótulos de recursos como pares de chave-valor. Para mais informações sobre marcadores, consulte O que são marcadores?
- (Opcional) Ativar o acesso global do endpoint: selecione essa opção se quiser enviar tráfego para seu back-end de uma conexão presente em qualquer região.
Por padrão, o anexo de endpoint exige que a conexão e o back-end da mesma região. Portanto, se você ativar o acesso global para o endpoint, uma conexão presente em qualquer região pode enviar tráfego para seu back-end.
- Clique em Criar.
A coluna Endereço IP especifica o endereço IP do anexo de endpoint. É necessário usar esse endereço IP ao configurar um conector para conectividade particular.
gcloud
Para criar um anexo de endpoint na linha de comando, faça o seguinte:
- Acesse o recurso de anexo do serviço PSC:
gcloud compute service-attachments list
O comando retorna a lista de anexos de serviço. Exemplo:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
Você vai precisar dessas informações nas etapas seguintes.
- Receba um token de autenticação antes de executar a API CreateEndpointAttachment:
TOKEN="$(gcloud auth print-access-token)"
- Crie o anexo do endpoint usando a API CreateEndpointAttachment. Exemplo:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME", "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
Em que:
- LOCATION é a região do anexo de serviço. Por exemplo,
us-west1
. - PROJECT_ID é o projeto do Google Cloud em que você criou o anexo de serviço do PSC.
- ENDPOINT_ATTACHMENT_NAME é o nome do anexo de endpoint. O nome precisa ser único. Não pode haver outros anexos de endpoints com o mesmo nome, e não é possível mudar o nome mais tarde. O nome deve começar com letra minúscula seguida por até 31 letras minúsculas, números ou hifens, mas não pode terminam com um hífen. O comprimento mínimo é 2.
- SERVICE_ATTACHMENT_NAME: é o nome do anexo de serviço. Usar o PSC
o nome da conta de serviço retornado pelo
execute o comando
gcloud compute service-attachments list
.
Depois que você chama a API, o Integration Connectors inicia uma operação de longa duração e que pode levar algum tempo para ser concluída. O endpoint anexo será criado depois que a operação for concluída com êxito.
- LOCATION é a região do anexo de serviço. Por exemplo,
- Receba o ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud e adicione esse ID à lista de permissões do anexo de serviço.
- Verifique se o anexo do endpoint foi criado usando a API GetEndpointAttachment.
Exemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
A API retorna uma resposta semelhante a esta:
{ "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo endpoint attachment", "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa", "endpointIp": "10.0.0.0", "labels": {"team":"sre"}, }
O endereço IP do anexo de endpoint está disponível no campo
endpointIp
. Neste exemplo de resposta, o endereço IP é10.0.0.0
. Use esse endereço IP ao configurar um conector para conectividade particular.
Se a criação do anexo de endpoint for bem-sucedida, o anexo recém-criado será listado na página Anexos de endpoint, semelhante à imagem abaixo:
As etapas, descritas até agora, mostram como criar um anexo de endpoint como um endereço IP. No entanto, Também é possível criar um anexo de endpoint como nome do host e usá-lo para configurar um conector para conectividade particular. Para entender como criar um anexo de endpoint com um nome de host, consulte Criar um anexo de endpoint como um nome de host.
Criar um anexo de endpoint como nome do host
Para criar um anexo de endpoint como um nome de host, execute as seguintes tarefas:
- Crie um anexo de endpoint como endereço IP. Para mais informações, consulte Crie um anexo de endpoint como endereço IP.
- Crie uma zona gerenciada privada do Cloud DNS em qualquer um dos seus projetos do Google Cloud.
Nessa zona DNS, você precisa adicionar um nome de host que será usado na configuração do conector e mapeá-lo para o endereço IP do anexo do endpoint que você recebeu na etapa 1. Para saber como criar uma zona gerenciada particular do Cloud DNS, consulte Criar uma zona particular e Adicionar um registro.
- Criar uma zona gerenciada do Integration Connectors no projeto do Google Cloud que você usa para os Integration Connectors. A zona gerenciada dos conectores de integração (zona de peering) se comunica com a zona particular gerenciada do Cloud DNS (criada na etapa 2) para resolução de nome.
Antes de criar a zona gerenciada, você precisa conceder os seguintes papéis e permissões:
- Conceda a permissão
connectors.managedZones.create
para o usuário criando a zona gerenciada do Integration Connectors.A permissão
connectors.managedZones.create
é disponível no papel do IAMroles/connectors.admin
ou no papel do IAMroles/connectors.managedZonesAdmin
. Para informações sobre os vários papéis do IAM e as permissões correspondentes disponíveis para os conectores de integração, consulte Papéis e permissões do IAM para conectores de integração. - Conceda o papel
role/dns.peer
à conta de serviçoservice-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
dos conectores de integração.Se o projeto do Google Cloud no Cloud DNS for diferente dos Integration Connectors projeto do Google Cloud e conceda o papel
roles/dns.peer
ao Conta de serviço do Integration Connectors no projeto do Google Cloud do Cloud DNS. Por exemplo: você quer criar a zona gerenciada do Integration Connectors no projeto 12345 do Google Cloud e a do Cloud DNS está no projeto 67890 do Google Cloud. Nesse caso, conceda o papelroles/dns.peer
à conta de serviçoservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
no projeto 67890 do Google Cloud.
Para criar uma zona gerenciada pelos Conectores de integração, use o console do Cloud ou a linha de comando (gcloud).
Console
Para criar uma zona gerenciada do Integration Connectors no console do Cloud, faça o seguinte:
- Acesse a página "Zonas gerenciadas" para os conectores de integração.
- Insira valores para os seguintes campos:
- Nome: um nome para a zona gerenciada.
- Nome do DNS de destino: nome completo do Cloud DNS para o qual você está criando a zona gerenciada (peering). Por exemplo,
server8.stage.user.private
. - Projeto de destino: nome do projeto do Google Cloud que tem a zona particular do Cloud DNS.
- Rede de destino: nome da rede VPC em que a zona particular do Cloud DNS é mantida.
- (Opcional) Descrição: insira uma descrição para o anexo do endpoint.
- (Opcional) Rótulos: insira rótulos de recursos como pares de chave-valor. Para mais informações sobre marcadores, consulte O que são marcadores?
- Clique em Criar.
gcloud
Para criar uma zona gerenciada de conectores de integração na linha de comando, faça o seguinte:
- Receba um token de autenticação antes de executar a API CreateManagedZone:
TOKEN="$(gcloud auth print-access-token)"
- Crie a zona gerenciada usando a API CreateManagedZone. Exemplo:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "description": "DESCRIPTION", "dns": "DNS_NAME", "target_project": "TARGET_PROJECT", "target_vpc": "TARGET_VPC" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
Em que:
- DESCRIPTION é uma descrição opcional da zona gerenciada.
- DNS_NAME: nome completo do Cloud DNS para o qual você está criando a zona gerenciada (de peering). Por exemplo,
server8.stage.user.private
. - TARGET_PROJECT é o nome do projeto do Google Cloud que tem a zona particular do Cloud DNS.
- TARGET_NETWORK é o nome da rede VPC em que a zona particular do Cloud DNS é mantida.
- PROJECT_ID é o projeto do Google Cloud que você está usando para os Conectores de integração.
- MANAGED_ZONE_NAME é o nome da zona gerenciada. O nome precisa ser único. Não é possível criar outras zonas gerenciadas com o mesmo nome, e não é possível mudar o nome depois. O nome precisa começar com uma letra minúscula seguida por até 63 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
Depois que você chamar a API, os conectores de integração vão iniciar uma operação de longa duração, que pode levar algum tempo para ser concluída. A página zona será criada depois que a operação for concluída com êxito.
- Verifique se a zona gerenciada foi criada usando a API GetManagedZone.
Exemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
A API retorna uma resposta semelhante a esta:
{ "name": "projects/demo-project/locations/global/managedZones/demo-mz", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo managed zone", "dns": "api.private.service.com.", "targetVpc": "target-project-vpc", "targetProject": "target-project" }
- Conceda a permissão
Se a criação da zona gerenciada for bem-sucedida, a zona gerenciada recém-criada será listada na página Zonas gerenciadas de forma semelhante à imagem a seguir:
Adicionar o projeto Integration Connectors à lista de permissões em um anexo de serviço
É possível criar o anexo de serviço do PSC para que ele aceite solicitações apenas dos projetos do Google Cloud especificados. No entanto, para fazer isso, você precisa do ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud. Para conferir o ID do projeto do diretório de serviços, use a API List Connections, conforme mostrado no exemplo abaixo.
Sintaxe
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Substitua:
- CONNECTORS_PROJECT_ID: o ID do projeto do Google Cloud em que você criou a conexão.
Exemplo
Este exemplo recebe o ID do projeto do diretório de serviços do projeto connectors-test
do Google Cloud.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
A execução desse comando no terminal vai mostrar uma resposta semelhante a esta:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Na saída de exemplo, para o projeto connectors-test
do Google Cloud, o ID do projeto do diretório de serviço é abcdefghijk-tp
.
Verificar a conexão do anexo de endpoint
Para verificar a conexão de anexo do endpoint, faça o seguinte:
- Na página Anexos do endpoint, clique no nome do anexo de endpoint que você criou.
- Na página Detalhes do anexo do endpoint que aparece, confira o campo Estado da conexão. Se o estado for
Accepted
, o anexo de endpoint está configurado corretamente e a conexão do Private Service Connect foi estabelecida.Para informações sobre outros status, consulte Status de conexão.
Configurar uma conexão para usar o anexo do endpoint
No Integration Connectors, quando você cria uma nova conexão ou atualiza uma existente, na seção "Destinos", selecione Anexo do endpoint como Tipo de destino e escolha o anexo de endpoint que criou na lista Anexo do endpoint.
Se você criou uma zona gerenciada, selecione Endereço do host como Tipo de destino e use o registro A criado ao criar a zona gerenciada.
Conectividade a vários tipos de redes privadas
Embora a conectividade particular nos Integration Connectors sempre seja feita por meio de um anexo de serviço do PSC, as etapas para estabelecer a conectividade particular variam um pouco de acordo com o ambiente. As seções a seguir descrevem como estabelecer a conectividade privada nos vários ambientes:
- O back-end é hospedado localmente
- O back-end é hospedado na VPC do Google
- O back-end é hospedado em um ambiente sem servidor do Google Cloud
- O back-end está disponível como um serviço gerenciado do Google Cloud