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:

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.

  1. 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.

  2. Crie a associação de serviço
    1. 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
    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 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 um anexo do ponto final para consumir o anexo do serviço PSC

Associação de ponto final como um endereço IP

Para 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ão

Em 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: