Conetividade de rede na VPC do Google Cloud

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

Esta página pressupõe que conhece os seguintes conceitos:

A conetividade privada à VPC do Google Cloud pode enquadrar-se em qualquer uma das seguintes categorias:

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

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 deve 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 da associação de serviços do PSC deve 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, devem estar na mesma região.

Conetividade privada a um serviço de back-end numa VPC do Google Cloud

Esta secção descreve como estabelecer uma conetividade privada quando o serviço de back-end e a associação de serviço do PSC estão no mesmo projeto do Google Cloud.

A imagem seguinte mostra a configuração da conetividade de rede privada dos Integration Connectors a um serviço alojado numa VPC do Google Cloud:

Para configurar a conetividade privada a um serviço de back-end numa VPC do Google Cloud, conclua os seguintes passos:

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 uma sonda de verificação de funcionamento e permita o tráfego da sonda.
    1. Crie a sonda de verificação de funcionamento.
      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 predefinida na qual o servidor MySQL é executado.

    2. Crie uma regra de firewall para permitir o tráfego da sondagem.
      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 de nível 4 e permita o tráfego do balanceador de carga.
    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 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

Depois de criar uma associação de serviço do PSC, crie uma associação de ponto final para consumir a associação de serviço do PSC. Para mais informações, consulte o artigo Crie uma associação de ponto final.

Conetividade privada para diferentes projetos do Google Cloud

Esta secção descreve como estabelecer a conetividade privada quando o serviço de back-end e a associação de serviço do PSC estão em projetos ou VPCs do Google Cloud diferentes.

A imagem seguinte mostra a configuração da conetividade de rede privada em que a associação de serviço do PSC e o serviço de back-end estão em projetos diferentes do Google Cloud:

Para configurar a conetividade privada para diferentes projetos do Google Cloud, conclua os seguintes passos:

Configure a conetividade privada

Para configurar a conetividade privada, siga estes passos:

  1. Crie um balanceador de carga. Se já tiver um balanceador de carga, ignore este passo.
    1. Crie um NEG zonal. Para mais informações, consulte o artigo Crie um NEG zonal.
    2. Adicione o NEG zonal como um 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 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

Adicione o projeto Integration Connectors à lista de autorizações numa associação de serviço

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

Depois de adicionar o projeto Integration Connectors a uma lista de autorizações numa associação de serviço do PSC, crie uma associação de ponto final para consumir a associação de serviço do PSC. Para mais informações, consulte o artigo Crie uma associação de ponto final.

Crie uma associação de ponto final

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

Se tiver problemas com a conetividade privada, 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.
  • Certifique-se de que tem a seguinte configuração para as regras de firewall:
    • O tráfego da sub-rede da associação de serviço do PSC tem de poder alcançar o seu serviço de back-end.
    • O balanceador de carga tem de conseguir enviar tráfego para o seu serviço de back-end.
      • Equilibradores de carga de passagem (ILB TCP/UDP L4) Os pedidos dos IPs NAT do anexo de serviço PSC têm de poder alcançar o seu back-end. Estes IPs NAT são atribuídos automaticamente a partir do intervalo de sub-rede NAT do PSC. Por conseguinte, tem de permitir o intervalo de IPs de toda a sub-rede NAT em que a sua associação 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 baseados em proxy/HTTP(s) (ILB de proxy de nível 4, ILB de nível 7) Os pedidos de um balanceador de carga de proxy têm origem na sub-rede só de proxy da região. Por conseguinte, as regras de firewall têm de ser configuradas para permitir pedidos de intervalos de sub-redes só de proxy para alcançar o back-end. Para encontrar a sub-rede apenas de proxy, use o seguinte comando:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
      • 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.

      • A sonda de verificação do estado de funcionamento tem de conseguir aceder ao seu sistema de back-end. As sondas de verificação de estado do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Assim, estes endereços IP têm de ter autorização para enviar tráfego para o seu servidor de back-end.
    • 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.