Conectividade de rede na VPC do Google Cloud

Esta página descreve como configurar a conectividade privada dos Integration Connectors para seu serviço de back-end, como MySQL, Postgres e SQL Server hospedados na VPC do Google Cloud.

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

A conectividade particular com a VPC do Google Cloud pode se enquadrar em qualquer uma das seguintes categorias:

  • O serviço de back-end e o anexo de serviço do PSC estão no mesmo projeto ou VPC do Google Cloud.
  • O serviço de back-end e o anexo de serviço do PSC estão em projetos ou VPCs diferentes do Google Cloud.

Considerações

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

  • O anexo de serviço PSC e o balanceador de carga são criados em sub-redes diferentes dentro da mesma VPC. 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 de serviço do PSC deve 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.

Conectividade particular com um serviço de back-end em uma VPC do Google Cloud

Esta seção descreve como estabelecer a conectividade particular quando o serviço de back-end e o anexo de serviço do PSC estão no mesmo projeto do Google Cloud.

A imagem a seguir mostra a configuração da conectividade de rede privada do Integration Connectors a um serviço hospedado em uma VPC do Google Cloud:

Para configurar a conectividade particular com um serviço de back-end em uma VPC do Google Cloud, siga estas etapas:

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 está protegido por um balanceador de carga, é necessário configurar um balanceador de carga.

  1. Crie uma verificação de integridade e permita o tráfego dela.
    1. Crie a sondagem de verificação de integridade.
      gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION

      Neste comando, defina BACKEND_SERVER_PORT como 3306, que é a porta padrão em que o servidor MySQL é executado.

    2. Crie uma regra de firewall para permitir o tráfego da sonda.
      gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
  2. Crie um balanceador de carga interno L4 e permita o tráfego dele.
    1. Crie um serviço de back-end.
      gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION 
    2. Adicione o grupo de instâncias ao serviço de back-end.
      gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
    3. Crie uma regra de encaminhamento.
      gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
    4. Crie uma regra de firewall para permitir o tráfego interno do balanceador de carga para o grupo de instâncias.
      gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  3. 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 instâncias Endpoints do PSC que podem se conectar a este 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 conseguir o ID do projeto do diretório de serviços, você pode usar pela API List Connections conforme mostrado no exemplo.

        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.

Depois de criar um anexo de serviço do PSC, crie um anexo de endpoint para consumir o anexo de serviço do PSC. Para mais informações, consulte Criar um anexo de endpoint.

Conectividade particular para diferentes projetos do Google Cloud

Esta seção descreve como estabelecer conectividade particular quando o serviço de back-end e o anexo de serviço do PSC estão em diferentes projetos ou VPCs do Google Cloud.

A imagem a seguir mostra a configuração de conectividade de rede privada em que o anexo do serviço PSC e o serviço de back-end estão em projetos diferentes do Google Cloud:

Para configurar a conectividade privada em diferentes projetos do Google Cloud, siga estas etapas:

Configurar a conectividade particular

Para configurar a conectividade particular, siga estas etapas:

  1. Criar um balanceador de carga. Se você já tiver um balanceador de carga, pule esta etapa.
    1. Crie um NEG zonal. Para mais informações, consulte Criar um NEG por zona.
    2. Adicione o NEG zonal como back-end e crie as seguintes regras:
      1. Crie uma regra de encaminhamento.
        gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
        --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
        --backend-service-region=REGION
      2. Crie uma regra de firewall para permitir o tráfego interno do balanceador de carga para o grupo de instâncias.
        gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
        --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
        --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  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 instâncias Endpoints do PSC que podem se conectar a este serviço. Para acessar 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.

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 conseguir o ID do projeto do diretório de serviços, você pode usar pela API List Connections conforme mostrado no exemplo.

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 amostra de saída, para o projeto connectors-test do Google Cloud, o ID do projeto do diretório de serviços é abcdefghijk-tp.

Depois de adicionar o projeto do Integration Connectors à lista de permissões em um anexo de serviço do PSC, crie um anexo de endpoint para consumir o anexo de serviço do PSC. Para mais informações, consulte Criar um anexo de endpoint.

Criar um anexo de endpoint

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 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 objeto privado O DNS é usado no lugar de um endereço IP para o destino do host, além de criar um endpoint como um endereço IP, também é preciso 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, 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 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

Se você tiver problemas com a conectividade particular, siga as diretrizes listadas nesta seção para evitar problemas comuns.

  • Para verificar se o anexo do endpoint está configurado corretamente e a conexão PSC foi estabelecida, verifique o status da conexão. Para mais informações, consulte Verificar a conexão do anexo de endpoint.
  • Garanta a seguinte configuração para as regras de firewall:
    • O tráfego da sub-rede do anexo de serviço do PSC precisa ter permissão para alcançar seu serviço de back-end.
    • O balanceador de carga precisa enviar tráfego para o serviço de back-end.
      • Balanceadores de carga de passagem (ILB TCP/UDP L4) As solicitações dos IPs NAT do anexo do serviço PSC precisam alcançar o back-end. Esses IPs NAT são alocados automaticamente pelo PSC NAT o intervalo de sub-rede NAT, você precisa permitir que o endereço IP intervalo em que o anexo de serviço reside. Para encontrar a sub-rede NAT do PSC, use o seguinte comando:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
      • Balanceadores de carga HTTP/baseados em proxy (ILB L4, ILB L7) As solicitações de um balanceador de carga de proxy se originam da sub-rede somente proxy da na mesma região. Portanto, as regras de firewall precisam ser configuradas para permitir solicitações de intervalos de sub-rede somente de proxy para alcançar seu back-end de back-end. Para encontrar o proxy somente sub-rede, use o seguinte comando:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
      • Para informações sobre como resolver problemas com o Load Balancer, consulte Resolver problemas com balanceadores de carga de aplicativo internos.

      • A sondagem de verificação de integridade precisa ter acesso ao sistema de back-end. As sondagens de verificação de integridade do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Então, os endereços IP precisam ter permissão para enviar tráfego ao servidor de back-end.
    • O teste de conectividade do Google Cloud pode ser usado para identificar lacunas na configuração da rede. Para mais informações, consulte Crie e execute testes de conectividade.