Acessar APIs regionais do Google por meio de endpoints

Neste documento, explicamos como usar endpoints do Private Service Connect para se conectar a endpoints regionais de APIs do Google compatíveis.

Para mais informações sobre outras configurações do Private Service Connect, consulte Private Service Connect.

Papéis

Para receber as permissões necessárias para criar um endpoint regional do Private Service Connect, peça ao administrador para conceder a você os seguintes papéis do IAM na rede VPC:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Antes de começar

  1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

    $ gcloud init

  2. Ative as APIs Compute Engine, Network Connectivity Center, Cloud DNS, and Service Directory.

    Ative as APIs

  3. Ative as APIs do Google que você quer acessar por meio dos endpoints do Private Service Connect usando a página APIs e serviços no console do Google Cloud. O Private Service Connect não ativa automaticamente nenhuma API.

  4. Verifique se as regras de firewall de saída permitem o tráfego para o endpoint. A configuração padrão de firewall para uma rede VPC permite esse tráfego porque contém uma regra de saída de permissão implícita. Verifique se você não criou uma regra de saída de prioridade mais alta que bloqueia o tráfego.

  5. Leia os Problemas conhecidos.

Criar um endpoint regional do Private Service Connect

É possível criar um endpoint regional do Private Service Connect para enviar solicitações a um endpoint regional para uma API de destino do Google.

Para conferir uma lista de endpoints regionais compatíveis, consulte Regiões e serviços compatíveis.

Os nomes de host de endpoints regionais têm duas formas:

  • Nomes de host públicos: SERVICE.REGION.rep.DOMAIN
  • Nomes de host particulares: SERVICE.REGION.p.rep.DOMAIN

    O nome do host particular adiciona um subdomínio p entre REGION e rep.

Ao configurar a API de destino do Google, você especifica o formato private do nome do host, por exemplo, spanner.me-central2.p.rep.googleapis.com. Depois de criar o endpoint, crie um registro DNS particular para o endpoint usando o mesmo nome de host de endpoint regional particular.

Embora você possa configurar o endpoint do Private Service Connect com qualquer nome, para facilitar a manutenção, recomendamos usar o nome do serviço da API de destino do Google, para que o nome DNS corresponda ao nome do endpoint. Por exemplo, se o endpoint tiver um destino de spanner.me-central2.p.rep.googleapis.com, use spanner como o nome do endpoint.

gcloud

Use o comando regional-endpoints create.

gcloud beta network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --network=NETWORK_URI \
    --subnetwork=SUBNET_URI \
    --target-google-api=REP_NAME

Se você quiser disponibilizar o endpoint para recursos em outras regiões, adicione a sinalização --enable-global-access.

Substitua:

  • ENDPOINT_NAME: um nome para o endpoint.

  • REGION: a região em que você quer criar o endpoint.

  • NETWORK_URI: o URI da rede VPC do endpoint: projects/PROJECT_ID/global/networks/NETWORK_NAME.

  • SUBNET_URI: o URI da sub-rede a que você quer conectar o endpoint: projects/PROJECT_ID/regions/SUBNET_NAME.

  • REP_NAME: o nome do endpoint do serviço regional a que você quer se conectar. Por exemplo, spanner.me-central2.p.rep.googleapis.com.

Listar endpoints

É possível listar todos os endpoints configurados.

gcloud

Use o comando regional-endpoints list.

gcloud beta network-connectivity regional-endpoints list \
    --region=REGION

Substitua REGION pela região dos endpoints que você quer listar.

Verifique se o endpoint está funcionando

Crie uma instância de máquina virtual (VM) na rede VPC e na região em que o endpoint está configurado. Execute o comando a seguir na VM para verificar se o endpoint do Private Service Connect está funcionando. Os endpoints não respondem a solicitações de ping (ICMP).

curl --connect-to SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IP:443 \
'SERVICE.REGION.p.rep.DOMAIN/PATH'

Substitua:

  • SERVICE: o serviço para que o endpoint está apontando. Por exemplo, spanner ou logging.
  • REGION: a região do endpoint.
  • DOMAIN: o domínio do serviço. Por exemplo, googleapis.com.
  • ENDPOINT_IP: o endereço IP do endpoint.
  • PATH: o caminho para um recurso que é disponibilizado por este serviço. Por exemplo, muitos serviços oferecem um documento de descoberta com o caminho $discovery/rest?version=v1.

O exemplo de solicitação a seguir testa se um endpoint com o endereço IP 192.168.1.100 pode solicitar o documento de descoberta da API Cloud Spanner do endpoint regional em me-central2.

curl --connect-to spanner.me-central2.p.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.p.rep.googleapis.com/$discovery/rest?version=v1'

Criar uma entrada de DNS particular para o endpoint

Crie entradas DNS para os endpoints neste formato: SERVICE.REGION.p.rep.DOMAIN. É possível usar o Cloud DNS para criar as entradas DNS.

  1. Crie uma zona DNS particular com este formato: REGION.p.rep.DOMAIN.

    Por exemplo, se você quiser usar um endpoint regional no domínio googleapis.com, na região me-central2, crie uma zona DNS particular com este nome: me-central2.p.rep.googelapis.com.

  2. Crie um registro DNS que aponte para o endereço IP atribuído ao endpoint. O nome do host precisa corresponder ao nome do serviço, SERVICE. Por exemplo, spanner ou logging são nomes de serviços.

Por exemplo, se o endpoint estiver configurado com o destino spanner.me-central2.p.rep.googleapis.com, crie uma zona DNS particular chamada me-central2.p.rep.googelapis.com e um registro A chamado spanner que aponta para o endereço IP do endpoint. O nome de domínio totalmente qualificado do endpoint é spanner.me-central2.p.rep.googelapis.com.

Configurar clientes para usar o nome do endpoint particular

Configure os clientes para usar os nomes DNS particulares em vez dos nomes DNS públicos. Consulte a documentação do seu cliente ou da biblioteca de cliente para mais informações sobre como configurá-lo para usar endpoints personalizados. Exemplo:

  • Python: é possível configurar api_endpoint em Opções de cliente.

  • Go: é possível configurar WithEndpoint em ClientOptions.

  • .NET: é possível configurar Endpoint na classe de builder do cliente.

  • gcloud: é possível configurar api_endpoint_overrides na gcloud CLI.

Receber informações detalhadas sobre um endpoint

É possível ver todos os detalhes de configuração de um endpoint.

gcloud

Use o comando regional-endpoints list describe.

gcloud beta network-connectivity regional-endpoints describe \
    ENDPOINT_NAME --region=REGION

Substitua:

  • ENDPOINT_NAME: o nome do endpoint.
  • REGION: a região do endpoint.

Excluir um endpoint

É possível excluir um endpoint.

gcloud

Use o comando regional-endpoints list delete.

gcloud beta network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

Substitua:

  • ENDPOINT_NAME: o nome do endpoint.
  • REGION: a região do endpoint.

Acessar endpoints de redes híbridas

Os clientes em redes conectadas ao Google Cloud com anexos da VLAN para túneis do Cloud Interconnect ou do Cloud VPN podem alcançar endpoints do Private Service Connect.

  • O anexo da VLAN ou o túnel do Cloud VPN precisa ser encerrado na mesma rede VPC que o endpoint. Os clientes em redes VPC com peering não podem alcançar os endpoints.

  • O tráfego de cliente de anexos da VLAN ou túneis do Cloud VPN pode alcançar endpoints em outra região se o acesso global estiver configurado.

  • O Dataplane v1 e o Dataplane v2 têm suporte para os anexos da VLAN. Para mais informações sobre as versões do Dataplane, consulte Dataplane v2.

É preciso configurar os sistemas na outra rede para que eles possam fazer consultas nas suas zonas DNS particulares.

Se você tiver implementado as zonas de DNS particular usando o Cloud DNS, conclua estas etapas:

  • Crie uma política de servidor de entrada na rede VPC a que a outra rede se conecta.

  • Identifique os pontos de entrada do encaminhador de entrada na região em que o anexo da VLAN ou o túnel do Cloud VPN está localizado, na rede VPC a que sua outra rede se conecta.

  • Configure sistemas e servidores de nomes DNS na outra rede para encaminhar os Nomes DNS para o endpoint a um ponto de entrada do encaminhador de entrada na mesma região do anexo da VLAN ou do túnel do Cloud VPN que se conecta à rede VPC.

Problemas conhecidos

  • Quando você cria um endpoint regional do Private Service Connect, ele pode ser visualizado no console do Google Cloud com um nome gerado automaticamente neste formato: rep-autogen-fr-ENDPOINT_NAME. No entanto, não edite o endpoint usando o console do Google Cloud ou modificando a regra de encaminhamento.

    Se você precisar alterar o nome ou ativar o acesso global, exclua o endpoint e crie um novo.