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:
-
Função de administrador de rede de computação (
roles/compute.networkAdmin
) -
Função de administrador de DNS (
roles/dns.admin
)
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
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.
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 theserviceusage.services.enable
permission. Learn how to grant roles.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.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
Na Google Cloud consola, aceda à página Private Service Connect.
Clique em Associar ponto final.
Em Destino, selecione API Google.
Na lista Âmbito, selecione Regional.
Na lista Região, selecione a região que quer usar.
Na lista Serviço de destino, selecione o serviço ao qual quer aceder.
Em Nome do ponto final, introduza um nome para o ponto final.
Em Rede, selecione uma rede.
Em Sub-rede, selecione uma sub-rede.
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.
Opcional: para disponibilizar o ponto final a partir de todas as regiões na rede VPC, selecione Ativar acesso global.
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
.
- Endereço IPv4, por exemplo,
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
.
- Endereço IPv4, por exemplo,
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
Na Google Cloud consola, aceda à página Private Service Connect.
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
Na Google Cloud consola, aceda à página Criar uma zona de DNS.
Para o Tipo de zona, selecione Privado.
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
, introduzaspanner-me-central2-rep-googleapis-com
.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.
.Opcional: adicione uma descrição.
Em Opções, selecione Predefinição (privado).
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.
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 zonaREP_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
eNETWORK_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
Na Google Cloud consola, aceda à página Zonas de DNS na nuvem.
Clique no nome da zona gerida à qual quer adicionar o registo.
Na página Detalhes da zona, clique em Adicionar padrão.
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.
Para Tipo de registo de recurso, selecione
A
.No campo Endereço IPv4, introduza ou selecione o endereço IP do ponto final do Private Service Connect.
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, comoA
para registos IPv4 ouAAAA
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, comoA
para registos IPv4 ouAAAA
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.