Acessar serviços publicados por meio de back-ends

Neste guia, você vai aprender a configurar um balanceador de carga de aplicativo externo global com um back-end do Private Service Connect para acessar um serviço publicado usando o Private Service Connect.

Figura 1. Usar um back-end baseado em um balanceador de carga aplicativo externo global permite que consumidores de serviço com acesso à Internet enviem tráfego para serviços na rede VPC do produtor de serviço (clique para ampliar).

Para mais informações, consulte Sobre back-ends do Private Service Connect.

Papéis

O papel Administrador do balanceador de carga do Compute (roles/compute.loadBalancerAdmin) contém a permissão necessária para executar as tarefas descritas neste guia.

Antes de começar

  • Se você quiser publicar seu próprio serviço, consulte Publicar serviços usando o Private Service Connect.

  • Se você estiver conectando um serviço publicado por terceiros, peça as seguintes informações ao produtor de serviços:

    • O URI do anexo de serviço ao qual você quer se conectar. O anexo de serviço tem este formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • Quaisquer requisitos para quais nomes de DNS você usa para enviar solicitações. Talvez seja necessário usar nomes de DNS específicos na configuração do mapa de URLs ou na configuração de DNS.

Criar um grupo de endpoints da rede

Crie um NEG do Private Service Connect que aponte para o anexo do serviço em que você quer acessar o serviço publicado. Se o serviço publicado for implantado em várias regiões diferentes, crie um NEG por anexo de serviço.

Cada NEG do Private Service Connect consome um endereço IP /32 para que o balanceador de carga possa se comunicar com ele.

Console

  1. No console do Google Cloud, acesse a página Grupos de endpoints da rede.

    Acessar grupos de endpoints da rede

  2. Clique em Criar grupo de endpoints de rede.

  3. Inserir um nome para o grupo de endpoints da rede.

  4. Em Tipo de grupo de endpoints de rede, selecione Grupo de endpoints de rede (Private Service Connect).

  5. Selecione o tipo de destino Serviço publicado.

  6. Em Serviço de destino, digite o URI do anexo de serviço.

  7. Selecione a Rede e a Sub-rede para criar o grupo de endpoints da rede.

    A sub-rede precisa estar na mesma região do serviço publicado.

  8. Clique em Criar.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET

Substitua:

  • NEG_NAME: um nome para o grupo de endpoints da rede.

  • TARGET_SERVICE: o anexo de serviço ao qual você quer se conectar.

  • REGION: a região em que o grupo de endpoints da rede será criado. A região precisa ser igual à do serviço de destino.

  • NETWORK: a rede em que o grupo de endpoints da rede será criado. Se omitida, a rede padrão será usada.

  • SUBNET: a sub-rede em que o grupo de endpoints da rede será criado. A sub-rede precisa estar na mesma região do serviço de destino. Uma sub-rede precisa ser informada se você fornecer a rede. Se a rede e a sub-rede forem omitidas, a rede padrão e a sub-rede padrão na REGION especificada vão ser usadas.

Reservar um endereço IP externo para o balanceador de carga

Para reservar um endereço IP externo para o balanceador de carga, siga estas etapas.

Console

  1. No console do Google Cloud, acesse a página Endereços IP.

    Acessar endereços IP

  2. Para reservar um endereço IPv4, clique em Reservar endereço estático.

  3. Atribua um Nome para o recurso de endereço IP.

  4. Defina o Nível da rede como Premium.

  5. Defina Versão IP como IPv4.

  6. Defina Tipo como Global.

  7. Clique em Reservar.

gcloud

  1. Reserve um endereço IPv4 externo global para o balanceador de carga.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global
    

    Substitua ADDRESS_NAME por um nome para o recurso de endereço IP.

  2. Execute este comando para ver o endereço IP reservado:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global
    

É possível criar um recurso de certificado SSL

Para criar um balanceador de carga HTTPS, é necessário adicionar um recurso de certificado SSL ao front-end do balanceador de carga. Crie um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado.

  • Certificados gerenciados pelo Google. Recomendamos que você use os certificados gerenciados pelo Google porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio e os registros DNS dele para provisionar o certificado. Se você ainda não tem um domínio, pode conseguir um no Google Domains. Para obter mais informações, consulte Começar a usar o Google Domains. Além disso, você precisa atualizar o registro A de DNS do domínio para apontar para o endereço IP do balanceador de carga criado na etapa anterior. Para obter instruções detalhadas, consulte Como usar certificados gerenciados pelo Google.

  • Certificados autogerenciados. Os certificados SSL autogerenciados são obtidos, provisionados e renovados por você. Os certificados autogerenciados podem ser assinados por uma autoridade certificadora ou podem ser autoassinados. Se eles forem assinados por uma autoridade certificadora, você precisa ter um domínio. Se você ainda não tem um domínio, pode conseguir um no Google Domains. Para obter mais informações, consulte Começar a usar o Google Domains. Além disso, você precisa atualizar o registro A de DNS do domínio para apontar para o endereço IP do balanceador de carga criado na etapa anterior. Para obter instruções detalhadas, consulte Como usar certificados SSL autogerenciados.

    Se você não quiser configurar um domínio agora, use um certificado SSL autoassinado para o teste.

Nessas instruções, presumimos que você já tenha criado um recurso de certificado SSL.

Configurar o balanceador de carga

Configure um balanceador de carga de aplicativo externo global com recursos avançados de gerenciamento de tráfego (esquema de balanceamento de carga definido como EXTERNAL_MANAGED) para se conectar a um serviço gerenciado.

Se você estiver se conectando a um serviço publicado implantado em várias regiões e tiver criado vários NEGS do Private Service Connect para se conectar a cada anexo de serviço, será possível adicionar todos os NEGs ao serviço de back-end.

Embora o NEG do Private Service Connect seja regional, todos os outros componentes de balanceamento de carga nessa configuração são globais.

Console

Iniciar a configuração

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. No card Balanceador de carga de aplicativo (HTTP/S), clique em Iniciar configuração.

  3. Selecione Da Internet para VMs ou serviços sem servidor.

  4. Selecione Balanceador de carga de aplicativo externo global.

  5. Clique em Continuar.

  6. Digite um Nome para o balanceador de carga.

  7. Mantenha a janela aberta para continuar.

Configuração de front-end

  1. Clique em Configuração de front-end.
  2. Clique em Adicionar IP e porta de front-end.
  3. Digite um Nome para o balanceador de carga.
  4. No campo Protocolo, selecione HTTPS (inclui HTTP/2).
  5. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.
  6. Em Endereço IP, selecione o endereço IP que você reservou.

  7. Clique na lista Certificado e selecione o certificado que você criou.

  8. Clique em OK.

  9. Clique em Concluído.

Configuração de back-end

O grupo de endpoints da rede do Private Service Connect é um tipo de back-end de balanceador de carga. Adicione todos os NEGs do Private Service Connect para o mesmo serviço gerenciado ao serviço de back-end.

  1. Clique em Configuração de back-end.
  2. Clique na lista Serviços e buckets de back-end e depois em Criar um serviço de back-end.
  3. Digite um Nome para o serviço de back-end.
  4. Defina o Tipo de back-end como Grupo de endpoints da rede do Private Service Connect.
  5. Na seção Back-ends, clique na lista Grupo de endpoints da rede do Private Service Connect e selecione o NEG do Private Service Connect que você criou. Clique em Concluído.
  6. Se você criou mais de um NEG do Private Service Connect, clique em Adicionar back-end para selecionar outro NEG.

    Repita essa etapa até que todos os NEGs do serviço gerenciado sejam adicionados ao serviço de back-end.

  7. Clique em Criar.

Regras de roteamento

Como essa configuração contém apenas um serviço de back-end, a regra de roteamento padrão é suficiente e você não precisa fazer alterações nesta seção.

Revisar e finalizar

  1. Para analisar a configuração, clique em Analisar e finalizar.
  2. Clique em Criar.

gcloud

  1. Crie um serviço de back-end para o serviço gerenciado ao qual você quer se conectar.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global
    

    Substitua BACKEND_SERVICE_NAME pelo nome do serviço de back-end.

  2. Adicione o NEG do Private Service Connect que aponta para o serviço de destino.

    Se você tiver criado vários NEGs em regiões diferentes para o mesmo serviço, repita essa etapa para adicionar todos os NEGs ao serviço de back-end.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=REGION \
      --global
    

    Substitua:

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
    • NEG_NAME: o nome do grupo de endpoints da rede.
    • REGION: o nome do grupo de endpoints da rede.
  3. Crie um mapa de URL para o balanceador de carga.

    Um mapa de URL precisa referir-se a um serviço de back-end padrão. Configure o serviço de back-end que você criou como o serviço padrão.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    Substitua:

    • URL_MAP_NAME: um nome para o mapa de URL.

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end padrão do balanceador de carga. O padrão é usado quando nenhuma regra de host corresponde ao nome do host solicitado.

  4. Crie o proxy de destino HTTPS.

    Use o recurso de certificado SSL que você criou para criar um proxy HTTPS de destino.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE
    

    Substitua:

    • PROXY_NAME: um nome para o proxy HTTPS de destino.
    • URL_MAP_NAME: o nome do mapa de URL.
    • CERTIFICATE: o nome do recurso de certificado.
  5. Crie a regra de encaminhamento.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global
    

    Substitua:

    • FWD_RULE: um nome para a regra de encaminhamento.

    • ADDRESS_NAME: o recurso de endereço IP que você reservou para usar na regra de encaminhamento.

    • PROXY_NAME: o nome do proxy HTTPS de destino.

Configurar registros DNS

Se você quiser acessar seu back-end do Private Service Connect usando um nome DNS, crie nomes DNS para cada regra de encaminhamento externo. O registro DNS precisa corresponder a um nome no mapa de URL. A menos que seu mapa de URL reescreva os nomes, o registro DNS também precisa corresponder aos nomes esperados pelo serviço do produtor.

Se você estiver usando o Cloud DNS para gerenciar DNS, consulte Como adicionar um registro DNS.

Verificar a configuração

  1. Crie a instância de VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --zone=ZONE
    

    Substitua:

    • VM_NAME: um nome para a máquina virtual.

    • NETWORK: a rede da VM.

    • ZONE: a zona para a VM.

  2. Conecte-se à VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Use curl para verificar a configuração. Esse comando define o cabeçalho Host e ignora a resolução DNS especificando um endereço IP definido pelo usuário. É possível omitir a porta se você estiver usando a porta padrão do protocolo, por exemplo, usando a porta 443 para HTTPS.

    É possível pular a validação do certificado usando a sinalização -k. Talvez seja necessário pular a validação se você usou um certificado autoassinado para configurar o proxy HTTPS de destino ou se a VM não tem o certificado da autoridade de certificação que assinou o certificado.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
        -H 'Host: HOST' \
        --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Substitua:

    • HOST: o nome do host configurado no mapa de URL.

    • RESOURCE_URI: o restante do URI do recurso que você quer usar para verificação.

    • FWD_RULE_IP_ADDRESS: o endereço IP atribuído à regra de encaminhamento.

Solução de problemas

A criação do back-end foi concluída, mas a conectividade não foi estabelecida

Se um back-end tiver sido criado para serviços publicados, mas a conectividade não estiver estabelecida, verifique o status de conexão do back-end. O status da conexão pode indicar as etapas que você pode seguir para resolver o problema.