Conetividade a serviços alojados num ambiente sem servidor
Esta página descreve como pode configurar os Integration Connectors para estabelecer ligação a serviços alojados em ambientes sem servidor, como o Cloud Run no Google Cloud.
A imagem seguinte mostra uma configuração de conetividade de rede privada dos Integration Connectors para um serviço alojado no ambiente do Cloud Run no Google Cloud:
Esta página pressupõe que conhece os seguintes conceitos:
- Anexos de pontos finais
- Zonas geridas
- Private Service Connect (PSC)
- Balanceador de carga do Google Cloud
Considerações
Quando cria uma associação de serviço do PSC, considere os seguintes pontos principais:
- O anexo de serviço do PSC e o equilibrador de carga são criados em sub-redes diferentes na mesma VPC. Especificamente, a associação de serviço é sempre criada numa sub-rede NAT.
- O tráfego do equilibrador de carga e da sondagem de verificação do estado têm de ser enviados para a mesma porta.
- Configure as regras de firewall para facilitar o fluxo de tráfego.
Regras de entrada
O tráfego da sub-rede da associação de serviços do PSC tem de chegar ao seu serviço de back-end.
Regras de saída
O tráfego de saída está ativado por predefinição num projeto do Google Cloud, a menos que sejam configuradas regras de negação específicas.
- Todos os componentes do Google Cloud, como a associação de serviço do PSC e o balanceador de carga, têm de estar na mesma região.
Crie um anexo de serviço do PSC
Para estabelecer uma conetividade privada a partir dos Integration Connectors, o seu serviço tem de ser exposto aos Integration Connectors através de uma associação do serviço do PSC. Um anexo de serviço usa sempre um balanceador de carga. Por conseguinte, se o seu serviço não estiver protegido por um balanceador de carga, tem de configurar um.
- Crie um balanceador de carga. Se já tiver um balanceador de carga, ignore este passo.
Crie um balanceador de carga de aplicações com o NEG sem servidor como back-end seguindo as instruções em Configure um balanceador de carga de aplicações interno regional com o Cloud Run.
- Crie a associação de serviço
- Crie uma sub-rede para o NAT do PSC. O seguinte comando cria uma sub-rede com o nome
psc-nat-subnet1
e a finalidade éPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Crie uma regra de firewall para permitir o tráfego do NAT do PSC para o balanceador de carga.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Crie uma associação de serviço com aprovação explícita.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
Neste comando, LIMIT é o limite de ligações para o projeto. O limite de ligações é o número de pontos finais do PSC do consumidor que podem estabelecer ligação a este serviço. Para receber o SERVICE_DIRECTORY_PROJECT_ID, siga este passo:
-
Pode criar a associação de serviço do PSC de modo que aceite pedidos apenas dos projetos do Google Cloud especificados. No entanto, para o fazer, precisa do ID do projeto do diretório de serviços associado ao seu projeto do Google Cloud. Para obter o ID do projeto do diretório de serviços, pode usar a API List Connections, conforme mostrado no exemplo seguinte.
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 o seguinte:
- CONNECTORS_PROJECT_ID: o ID do seu projeto do Google Cloud onde criou a ligação.
Exemplo
Este exemplo obtém o ID do projeto do diretório de serviços para o projeto do Google Cloud
connectors-test
.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 deste comando no terminal apresenta um resultado semelhante ao seguinte:
..... { "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 } }, ....
No resultado de exemplo, para o projeto do Google Cloud, o ID do projeto do diretório de serviços é
abcdefghijk-tp
.connectors-test
-
- Crie uma sub-rede para o NAT do PSC. O seguinte comando cria uma sub-rede com o nome
Crie um anexo do ponto final para consumir o anexo do serviço PSC
Associação de ponto final como um endereço IPPara ver instruções sobre como criar uma associação de ponto final como um endereço IP, consulte o artigo Crie uma associação de ponto final como um endereço IP.
Anexo do ponto final como nome de anfitriãoEm determinados casos, como back-ends com TLS ativado, o destino requer que use nomes de anfitrião em vez de IPs privados para realizar a validação TLS. Nos casos em que é usado um DNS privado em vez de um endereço IP para o destino do anfitrião, além de criar uma associação de ponto final como um endereço IP, também tem de configurar zonas geridas. Para obter instruções sobre como criar uma associação de ponto final como um nome de anfitrião, consulte o artigo Criar uma associação de ponto final como um nome de anfitrião.
Mais tarde, quando configurar a ligação para usar a associação de ponto final, pode selecionar esta associação de ponto final.
Configure uma ligação para usar a associação do ponto final
Agora que criou uma associação de ponto final, use-a na sua ligação. Quando cria uma nova associação ou atualiza uma associação existente, na secção Destinos, selecione Anexo do ponto final como o Tipo de destino e selecione o anexo do ponto final que criou na lista Anexo do ponto final.
Se criou uma zona gerida, selecione Endereço do anfitrião como o Tipo de destino e use o registo A que criou ao criar a zona gerida.
Sugestões de resolução de problemas
Siga as diretrizes indicadas nesta secção para evitar problemas comuns:
- Para verificar se a associação do ponto final está configurada corretamente e se a ligação PSC está estabelecida, verifique o estado da ligação. Para mais informações, consulte o artigo Valide a ligação da associação de pontos finais.
- Para obter informações sobre a resolução de problemas do balanceador de carga, consulte o artigo Resolva problemas com balanceadores de carga de aplicações internos.
- O teste de conetividade do Google Cloud pode ser usado para identificar lacunas na configuração da sua rede. Para mais informações, consulte o artigo Crie e execute testes de conetividade.