Aceda às APIs Google regionais através de pontos finais

Este documento explica como usar pontos finais do Private Service Connect para estabelecer ligação a pontos finais regionais das APIs Google suportadas.

Para obter informações sobre outras configurações do Private Service Connect, consulte o artigo Private Service Connect.

Funções

Para receber as autorizações de que precisa para criar um ponto final do Private Service Connect regional, peça ao seu administrador para lhe conceder as seguintes funções do IAM na sua rede VPC:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Antes de começar

  1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

    $ gcloud init

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  2. Enable the Compute Engine, Network Connectivity Center, and Cloud DNS APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. Além disso, ative a API para o serviço de destino ao qual quer aceder através do ponto final do Private Service Connect. Por exemplo, se quiser aceder ao spanner.me-central2.rep.googleapis.com, ative a API Cloud Spanner. O Private Service Connect não ativa automaticamente nenhuma API.

  4. Certifique-se de que as regras de firewall de saída permitem o tráfego para o ponto final. A configuração da firewall predefinida para uma rede VPC permite este tráfego porque contém uma regra de saída de permissão implícita. Verifique se não criou uma regra de saída de prioridade mais elevada que bloqueie o tráfego.

Crie um ponto final regional do Private Service Connect

Pode criar um ponto final regional do Private Service Connect para enviar pedidos a um ponto final regional de uma API Google de destino.

Para ver uma lista dos pontos finais regionais suportados, consulte o artigo Pontos finais do serviço regional.

Consola

  1. Na Google Cloud consola, aceda à página Private Service Connect.

    Aceda ao Private Service Connect

  2. Clique em Associar ponto final.

  3. Em Destino, selecione API Google.

  4. Na lista Âmbito, selecione Regional.

  5. Na lista Região, selecione a região que quer usar.

  6. Na lista Serviço de destino, selecione o serviço ao qual quer aceder.

  7. Em Nome do ponto final, introduza um nome para o ponto final.

  8. Em Rede, selecione uma rede.

  9. Em Sub-rede, selecione uma sub-rede.

  10. Em Endereço IP, escolha uma das seguintes opções para configurar um endereço IP:

    • Selecione Atribuir automaticamente para atribuir e reservar automaticamente um novo endereço IP.
    • Selecione um endereço IP reservado na lista.
    • Clique em Criar endereço IP para reservar um novo endereço IP.
  11. Opcional: para disponibilizar o ponto final a partir de todas as regiões na rede VPC, selecione Ativar acesso global.

  12. Clique em Adicionar ponto final.

gcloud

Use o comando gcloud network-connectivity regional-endpoints create.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --address=ADDRESS \
    --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
    --subnetwork=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --target-google-api=REP_DNS_NAME

Se quiser disponibilizar o ponto final aos recursos noutras regiões, adicione a flag --enable-global-access.

Substitua o seguinte:

  • ENDPOINT_NAME: um nome para o ponto final.

  • REGION: a região na qual quer criar o ponto final.

  • ADDRESS: o endereço IPv4 ou IPv6 que quer usar para o ponto final. Se for omitido, é atribuído um endereço IPv4 da sub-rede. Use um dos seguintes formatos:

    • Endereço IPv4, por exemplo, 10.0.0.2.
    • URI do recurso de endereço IPv4 ou IPv6, por exemplo, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • PROJECT_ID: o projeto no qual está a criar o ponto final.

  • NETWORK_NAME: o nome da rede VPC para o ponto final.

  • SUBNET_NAME: a sub-rede à qual está a ligar o ponto final.

  • REP_DNS_NAME: o nome do anfitrião do ponto final do serviço regional ao qual se está a ligar. Por exemplo, spanner.me-central2.rep.googleapis.com.

API

Use o projects.locations.regionalEndpoints.create método.

Método HTTP e URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints?regionalEndpointId=ENDPOINT_NAME
{
  "accessType": "REGIONAL",
  "address": "ADDRESS",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "targetGoogleApi": "REP_DNS_NAME"
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto do ponto final.
  • REGION: a região na qual quer criar o ponto final.
  • ENDPOINT_NAME: um nome para o ponto final.
  • ADDRESS: o endereço IPv4 ou IPv6 que quer usar para o ponto final. Se for omitido, é atribuído um endereço IPv4 da sub-rede. Use um dos seguintes formatos:
    • Endereço IPv4, por exemplo, 10.0.0.2.
    • URI do recurso de endereço IPv4 ou IPv6, por exemplo, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • NETWORK_NAME: o nome da rede VPC para o ponto final.
  • SUBNET_NAME: o nome da sub-rede à qual quer ligar o ponto final.
  • REP_DNS_NAME: o nome do anfitrião do ponto final do serviço regional ao qual quer estabelecer ligação. Por exemplo, spanner.me-central2.rep.googleapis.com.

Apresente pontos finais

Pode listar todos os pontos finais configurados.

Consola

  1. Na Google Cloud consola, aceda à página Private Service Connect.

    Aceda ao Private Service Connect

  2. Clique no separador Pontos finais ligados.

    São apresentados todos os pontos finais, incluindo os pontos finais com segmentações de pontos finais regionais.

gcloud

Use o comando gcloud network-connectivity regional-endpoints list.

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

Substitua REGION pela região dos pontos finais que quer listar.

API

Use o projects.locations.regionalEndpoints.list método.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto do ponto final.
  • REGION: a região dos pontos finais que quer listar.

Verifique se o ponto final está a funcionar

Crie uma instância de máquina virtual (VM) na rede VPC e na região onde o ponto final está configurado. Execute o seguinte comando na VM para verificar se o ponto final do Private Service Connect está a funcionar. Os pontos finais não respondem a pedidos de ping (ICMP).

  • Para validar um ponto final IPv4, faça o seguinte:

    curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \
    'https://REP_DNS_NAME/PATH'
    
  • Para validar um ponto final IPv6, faça o seguinte:

    curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \
    'https://REP_DNS_NAME/PATH'
    

Substitua o seguinte:

  • REP_DNS_NAME: o nome DNS público do ponto final regional de destino, por exemplo, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: o endereço IP do ponto final.
  • PATH: o caminho para um recurso que é fornecido por este serviço. Por exemplo, muitos serviços oferecem um documento de descoberta com o caminho $discovery/rest?version=v1.

O pedido de exemplo seguinte testa se um ponto final com o endereço IP 192.168.1.100 pode pedir o documento de descoberta da API Cloud Spanner ao ponto final regional em me-central2.

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

Crie uma entrada DNS privada para o ponto final

Tem de criar entradas DNS privadas para que os clientes possam direcionar pedidos para o seu ponto final do Private Service Connect.

Recomendamos que crie uma zona privada que use o mesmo nome de anfitrião que o ponto final regional de destino: SERVICE.REGION.rep.DOMAIN e crie um registo de nível superior nessa zona.

Por exemplo, se o seu ponto final do Private Service Connect tiver um destino de spanner.me-central2.rep.googleapis.com, crie uma zona privada para spanner.me-central2.rep.googleapis.com que contenha um registo de nível superior para spanner.me-central2.rep.googleapis.com. A criação de registos no vértice do domínio significa que pode aceder ao nome do anfitrião público de outros pontos finais regionais, por exemplo, logging.me-central2.rep.googleapis.com.

As secções seguintes descrevem como usar o Cloud DNS para criar uma zona privada e um registo de DNS de nível superior.

Crie uma zona privada

Consola

  1. Na Google Cloud consola, aceda à página Criar uma zona de DNS.

    Aceda a Crie uma zona DNS

  2. Para o Tipo de zona, selecione Privado.

  3. Em Nome da zona, introduza um nome. Por exemplo, se o seu ponto final do Private Service Connect apontar para spanner.me-central2.rep.googleapis.com, introduza spanner-me-central2-rep-googleapis-com.

  4. Para Nome DNS, especifique o nome de anfitrião do ponto final regional de destino seguido de um ponto final. Por exemplo, spanner.me-central2.rep.googleapis.com..

  5. Opcional: adicione uma descrição.

  6. Em Opções, selecione Predefinição (privado).

  7. Selecione as redes VPC onde quer que a zona privada seja visível. Apenas as redes de VPC que selecionar estão autorizadas a consultar registos na zona.

  8. Clique em Criar.

gcloud

Execute o comando dns managed-zones create:

gcloud dns managed-zones create ZONE_NAME \
    --dns-name=REP_DNS_NAME. \
    --networks=VPC_NETWORK_LIST \
    --visibility=private \
    --description="Private zone for REP_DNS_NAME"

Substitua o seguinte:

  • ZONE_NAME: um nome para a sua zona, por exemplo, spanner-me-central2-rep-googleapis.com.
  • DESCRIPTION: uma descrição da sua zona
  • REP_DNS_NAME: o sufixo DNS da sua zona; use o nome de anfitrião do endpoint regional de destino, por exemplo, spanner.me-central2.rep.googleapis.com
  • VPC_NETWORK_LIST: uma lista delimitada por vírgulas de redes de VPC autorizadas a consultar a zona

API

Envie um pedido POST através do método managedZones.create:

Método HTTP e URL:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

Corpo JSON do pedido:

{
  "name": "ZONE_NAME",
  "dnsName": "REP_DNS_NAME.",
  "description": "DESCRIPTION",
  "visibility": "private",
  "privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_1_URL"
      },
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_2_URL"
      }
    ]
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto da zona DNS.
  • ZONE_NAME: o nome da zona privada que criou para este ponto final regional.
  • REP_DNS_NAME: o FQDN do registo que está a criar; use o nome do anfitrião do ponto final regional de destino, por exemplo, spanner.me-central2.rep.googleapis.com.
  • DESCRIPTION: uma descrição da zona DNS.
  • NETWORK_1_URL e NETWORK_2_URL: os URLs completos das redes VPC autorizadas a consultar a zona, por exemplo, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

Adicione um registo DNS à zona

Consola

  1. Na Google Cloud consola, aceda à página Zonas de DNS na nuvem.

    Aceda às zonas do Cloud DNS

  2. Clique no nome da zona gerida à qual quer adicionar o registo.

  3. Na página Detalhes da zona, clique em Adicionar padrão.

  4. Na página Create record set, deixe o campo DNS name em branco. Se deixar o campo em branco, cria um registo de recurso no vértice do domínio.

  5. Para Tipo de registo de recurso, selecione A.

  6. No campo Endereço IPv4, introduza ou selecione o endereço IP do ponto final do Private Service Connect.

  7. Clique em Criar.

gcloud

Para adicionar um conjunto de registos de recursos, use o comando gcloud dns record-sets create :

gcloud dns record-sets create REP_DNS_NAME \
    --rrdatas=ADDRESS \
    --type=RECORD_TYPE \
    --ttl=TTL \
    --zone=ZONE_NAME

Substitua o seguinte:

  • REP_DNS_NAME: o FQDN do registo que está a criar; use o nome do anfitrião do ponto final regional de destino, por exemplo, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: o endereço IP do ponto final do Private Service Connect.
  • RECORD_TYPE: o tipo de registo DNS, como A para registos IPv4 ou AAAA para registos IPv6.
  • TTL: o TTL em segundos que o resolvedor armazena em cache este conjunto de registos de recursos, por exemplo, 300.
  • ZONE_NAME: o nome da zona privada que criou para este ponto final regional.

API

Para adicionar um conjunto de registos de recursos, use o método resourceRecordSets.create:

Método HTTP e URL:

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME/rrsets

Corpo JSON do pedido:

{
  "name": "REP_DNS_NAME.",
  "type": "RECORD_TYPE",
  "ttl": TTL,
  "rrdatas": [ "ADDRESS" ]
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto da zona DNS.
  • ZONE_NAME: o nome da zona privada que criou para este ponto final regional.
  • REP_DNS_NAME: o FQDN do registo que está a criar; use o nome do anfitrião do ponto final regional de destino, por exemplo, spanner.me-central2.rep.googleapis.com.
  • RECORD_TYPE: o tipo de registo DNS, como A para registos IPv4 ou AAAA para registos IPv6.
  • TTL: o TTL em segundos que o resolvedor armazena em cache este conjunto de registos de recursos, por exemplo, 300.
  • ADDRESS: o endereço IP do ponto final do Private Service Connect.

Configure os clientes para usarem o nome do ponto final privado

Tem de configurar os clientes para usarem os nomes DNS privados em vez dos nomes DNS públicos. Consulte a documentação do seu cliente ou biblioteca de cliente para ver informações sobre a configuração para usar pontos finais personalizados. As páginas seguintes incluem passos de configuração para alguns clientes comuns:

  • Python: pode configurar api_endpoint em Client options.

  • Aceda: pode configurar WithEndpoint em ClientOptions.

  • .NET: pode configurar Endpoint na classe de criação do cliente.

  • gcloud: pode configurar api_endpoint_overrides na CLI gcloud.

Obtenha informações detalhadas sobre um ponto final

Pode ver os detalhes de configuração de um ponto final.

gcloud

Use o comando gcloud network-connectivity regional-endpoints describe.

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

Substitua o seguinte:

  • ENDPOINT_NAME: o nome do ponto final.
  • REGION: a região do ponto final.

API

Use o comando projects.locations.regionalEndpoints.get.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto do ponto final.
  • REGION: a região dos pontos finais que quer listar.
  • ENDPOINT_NAME: o nome do ponto final.

Atualize a configuração de acesso global

Não pode atualizar um ponto final do Private Service Connect que tenha um destino de ponto final regional. Se precisar de alterar a definição de acesso global do ponto final, elimine o ponto final e crie um novo ponto final com a definição de acesso global necessária.

Elimine um ponto final

Pode eliminar um ponto final.

gcloud

Use o comando gcloud network-connectivity regional-endpoints delete.

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

Substitua o seguinte:

  • ENDPOINT_NAME: o nome do ponto final.
  • REGION: a região do ponto final.

API

Use o comando projects.location.regionalEndpoints.delete.

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto do ponto final.
  • REGION: a região do ponto final.
  • ENDPOINT_NAME: o nome do ponto final.

Aceda a pontos finais a partir de redes híbridas

Os clientes em redes ligadas Google Cloud com anexos de VLAN para túneis do Cloud Interconnect ou Cloud VPN podem alcançar pontos finais do Private Service Connect.

  • O anexo da VLAN ou o túnel da Cloud VPN tem de terminar na mesma rede da VPC (ou rede da VPC partilhada) que o ponto final. Os clientes em redes VPCs com intercâmbio não conseguem alcançar os pontos finais.

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

  • O plano de dados v1 e o plano de dados v2 são suportados para as associações de VLAN. Para mais informações sobre as versões do plano de dados, consulte o artigo Dataplane v2.

Tem de configurar os sistemas na outra rede para que possam fazer consultas às suas zonas de DNS privadas.

Se implementou as zonas DNS privadas através do Cloud DNS, conclua os seguintes passos:

  • Crie uma política de servidor de entrada na rede VPC à qual a sua outra rede se liga.

  • Identifique os pontos de entrada do encaminhador de entrada na região onde o anexo da VLAN ou o túnel da VPN na nuvem está localizado, na rede VPC à qual a sua outra rede se liga.

  • Configure os sistemas e os servidores de nomes DNS na outra rede para encaminhar os nomes DNS do ponto final para um ponto de entrada do encaminhador de entrada na mesma região que a associação de VLAN ou o túnel de VPN do Google Cloud que se liga à rede VPC.