Conectividade com serviços hospedados em um ambiente sem servidor

Nesta página, descrevemos como configurar o 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 para PSC, considere os seguintes pontos-chave:

  • O anexo de serviço 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.
  • Configurar 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 de 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 a conectividade particular dos Integration Connectors, seu serviço precisa ser exposto aos Integration Connectors usando um anexo de serviço PSC. Um anexo de serviço sempre usa um balanceador de carga. Portanto, se o serviço não está protegido por um balanceador de carga, é necessário configurar um balanceador de carga.

  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. Basta seguir as instruções em Configurar um balanceador de carga de aplicativo regional interno com o Cloud Run.

  2. Criar 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ões 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 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.

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 endereço IP, consulte Criar um anexo de endpoint como endereço IP.

Anexo de endpoint como nome do host

Em determinados casos, como back-ends com TLS ativado, o destino exige o uso de em vez de IPs privados para realizar a validação 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 nome do host, consulte Criar um anexo de endpoint como nome do host.

Depois, ao configurar sua conexão para usar o anexo de endpoint, será possível 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 escolha 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 que você criou ao criar a zona gerenciada.

Dicas de solução de problemas

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