Conectividade com serviços hospedados em um ambiente sem servidor

Esta página descreve como configurar os Integration Connectors para se conectar a serviços hospedados em ambientes sem servidor, como o Cloud Run no Google Cloud.

A imagem a seguir mostra uma configuração de conectividade de rede particular dos Integration Connectors para um serviço hospedado no ambiente do Cloud Run no Google Cloud:

Nesta página, consideramos que você esteja familiarizado com os seguintes conceitos:

Considerações

Ao criar um anexo de serviço do PSC, considere os seguintes pontos principais:

  • O anexo de serviço do PSC e o balanceador de carga são criados em sub-redes diferentes na mesma VPC. E, especificamente, o anexo de serviço é sempre criado em uma sub-rede NAT.
  • O tráfego do balanceador de carga e da sondagem de verificação de integridade precisa ser enviado 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 do anexo do serviço PSC precisa chegar ao seu serviço de back-end.

    Regras de saída

    O tráfego de saída é ativado por padrão em um projeto do Google Cloud, a menos que regras de negação específicas sejam configuradas.

  • Todos os componentes do Google Cloud, como o anexo do serviço do PSC e o balanceador de carga, precisam estar na mesma região.

Criar um anexo de serviço do PSC

Para estabelecer conectividade privada com os Integration Connectors, seu serviço precisa ser exposto a eles usando um anexo de serviço do PSC. Um anexo de serviço sempre usa um balanceador de carga. Portanto, se o serviço não estiver atrás de um balanceador de carga, será necessário configurar um.

  1. Criar um balanceador de carga. Se você já tiver um balanceador de carga, pule esta etapa.

    Crie um balanceador de carga de aplicativo usando o NEG sem servidor como back-end seguindo as instruções em Configurar um balanceador de carga de aplicativo interno regional com o Cloud Run.

  2. Crie o anexo de serviço
    1. Crie uma sub-rede para PSC NAT. O comando a seguir 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
    2. 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
    3. Crie um anexo 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

      Nesse comando, LIMIT é o limite de conexão do projeto. O limite de conexão é o número de endpoints do PSC do consumidor que podem se conectar a esse serviço. Para receber o SERVICE_DIRECTORY_PROJECT_ID, siga estas etapas:

      • É 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 mostra uma saída 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.

Criar um anexo de endpoint para consumir o anexo de serviço do PSC

Anexo de endpoint como um endereço IP

Para instruções sobre como criar um anexo de endpoint como um endereço IP, consulte Criar um anexo de endpoint como um endereço IP.

Anexo de endpoint como um nome de host

Em alguns casos, como back-ends com TLS ativado, o destino exige o uso de nomes de host em vez de IPs particulares para realizar a validação de TLS. Nos casos em que um DNS particular é usado em vez de um endereço IP para o destino do host, além de criar um anexo de endpoint como um endereço IP, também é necessário configurar zonas gerenciadas. Para instruções sobre como criar um anexo de endpoint como um nome de host, consulte Criar um anexo de endpoint como um nome de host.

Depois, quando você configurar a conexão para usar o anexo de endpoint, poderá selecionar esse anexo.

Configurar uma conexão para usar o anexo do endpoint

Agora que você criou um anexo de endpoint, use-o na sua conexão. Ao criar ou atualizar uma conexão, na seção "Destinos", selecione Anexo de endpoint como Tipo de destino e selecione o anexo de endpoint criado na lista Anexo de 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.

Dicas de solução de problemas

Siga as diretrizes listadas nesta seção para evitar problemas comuns: