Aceda às APIs Google globais através de back-ends
Esta página descreve como aceder às APIs Google globais através de back-ends do Private Service Connect baseados em balanceadores de carga de aplicações internos entre regiões.
Esta configuração permite-lhe segmentar uma ou mais APIs Google globais individuais enquanto aplica a visibilidade e o controlo que os back-ends do Private Service Connect oferecem.
- Pode configurar nomes de anfitrião personalizados, locais para a sua nuvem virtual privada (VPC) e redes no local ligadas, que encaminham o tráfego para as APIs Google globais escolhidas.
- Pode aceder aos back-ends a partir de qualquer região, e o back-end pode equilibrar a carga do tráfego para grupos de pontos finais da rede (NEGs) do Private Service Connect localizados em qualquer região.
- Pode enviar tráfego para os back-ends a partir de redes VPC com peering.
Para ver uma lista das APIs Google globais disponíveis, consulte o artigo Segmentações da API Google global.
Antes de começar
-
Para obter as autorizações de que precisa para configurar um back-end para aceder às APIs Google globais, peça ao seu administrador para lhe conceder as seguintes funções IAM no seu Google Cloud projeto:
-
Administrador de computação (
roles/compute.admin
) -
Proprietário do Gestor de certificados (
roles/certificatemanager.owner
)
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.
-
Administrador de computação (
Ative a API Compute Engine no seu projeto.
Ative a API Certificate Manager no seu projeto.
Crie uma chave privada e um certificado assinado a partir de uma autoridade de certificação (CA). Siga as instruções no Passo 1: crie uma chave privada e um certificado. A chave privada e o certificado são necessários para criar um certificado SSL autogerido com o Gestor de certificados.
Crie um recurso de certificado para um Application Load Balancer interno entre regiões usando a chave privada e o certificado assinado que criou. Quando carregar o certificado, tem de definir o âmbito como
all-regions
. Para mais informações, consulte o artigo Carregue um certificado autogerido no gestor de certificados. O recurso de certificado é necessário para configurar o proxy HTTPS de destino para o balanceador de carga.Crie uma sub-rede só de proxy se ainda não tiver uma. Tem de existir uma única sub-rede só de proxy na rede VPC e na região onde pretende criar a regra de encaminhamento do balanceador de carga da aplicação interno entre regiões. Esta sub-rede é usada por todos os balanceadores de carga de aplicações internos nessa rede e região.
Crie um NEG do Private Service Connect
Para cada API Google global à qual quer aceder, crie um NEG do Private Service Connect. Os NEGs do Private Service Connect são regionais, mesmo quando são usados para estabelecer ligação a APIs Google globais.
Não é possível atualizar um NEG do Private Service Connect depois de ser criado.
Consola
Na Google Cloud consola, aceda à página Criar um grupo de pontos finais de rede.
Na página Criar grupo de pontos finais de rede, introduza um Nome para o grupo de pontos finais de rede.
Para o Tipo de grupo de pontos finais da rede, selecione NEG do Private Service Connect (regional).
Para Destino, selecione APIs Google globais.
Selecione a Região para o grupo de pontos finais de rede.
Selecione o Serviço de destino para o grupo de pontos finais da rede.
Clique em Criar.
gcloud
Use o comando network-endpoint-groups create
.
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=REGION
Substitua o seguinte:
NEG_NAME
: um nome para o grupo de pontos finais da rede.TARGET_SERVICE
: o destino da API Google global ao qual quer estabelecer ligação, por exemplo,pubsub.googleapis.com
. Consulte a lista de destinos da API Google globais suportados.REGION
: a região na qual criar o grupo de pontos finais de rede.
API
Faça um pedido POST
ao
método regionNetworkEndpointGroups.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups { "name": "NEG_NAME", "networkEndpointType": "PRIVATE_SERVICE_CONNECT", "pscTargetService": "TARGET_SERVICE" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do grupo de pontos finais da rede.REGION
: a região na qual criar o grupo de pontos finais de rede.NEG_NAME
: um nome para o grupo de pontos finais da rede.TARGET_SERVICE
: o destino da API Google global ao qual quer estabelecer ligação, por exemplo,pubsub.googleapis.com
. Consulte a lista de destinos da API Google globais suportados.
Configure o balanceador de carga
Para aceder às APIs Google globais, configure um Application Load Balancer interno entre regiões.
Consola
Selecione o tipo de balanceador de carga
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Interno e clique em Seguinte.
- Para a Implementação em várias regiões ou numa única região, selecione Melhor para cargas de trabalho em várias regiões e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Introduza um nome para o equilibrador de carga.
Selecione uma rede para o balanceador de carga.
A rede tem de conter uma sub-rede só de proxy na região onde está a criar o balanceador de carga.
Configuração da interface
- Clique em Configuração do front-end.
- Introduza um nome para a regra de encaminhamento do balanceador de carga.
- No campo Protocolo, selecione HTTPS (inclui HTTP/2 e HTTP/3).
- Selecione uma região da sub-rede para a sub-rede do balanceador de carga.
- Selecione uma sub-rede para o balanceador de carga.
- Clique em Endereço IP e, em seguida, opte por uma das seguintes ações:
- Para atribuir automaticamente um endereço IP efémero, selecione Efémero (automático).
- Para escolher um endereço IP efémero, selecione Efémero (personalizado) e, em seguida, introduza um endereço IP efémero personalizado do intervalo de endereços IP da sub-rede do balanceador de carga.
- Para reservar e usar um endereço IP interno estático, clique em
Criar endereço IP e, de seguida, faça o seguinte:
- Introduza um nome para o endereço IP.
- Clique em Endereço IP estático e, em seguida, faça uma das seguintes ações:
- Para atribuir automaticamente um endereço IP estático, selecione Atribuir automaticamente.
- Para configurar um endereço IP específico, selecione Deixar-me escolher e, em seguida, introduza um endereço IP personalizado do intervalo de endereços IP da sub-rede do balanceador de carga.
- Clique em Reservar.
- Certifique-se de que o campo Porta está definido como
443
para permitir o tráfego HTTPS. - Clique na lista Certificado e, de seguida, selecione o seu certificado autogerido.
- Clique em Concluído.
Configuração do back-end
- Clique em Configuração de back-end.
Para cada API Google global à qual quer aceder, crie um serviço de back-end global. Para criar um serviço de back-end global, faça o seguinte:
- No menu Criar ou selecionar serviços de back-end, selecione Criar um serviço de back-end.
- Introduza um nome para o serviço de back-end.
- Defina o Tipo de back-end como Grupo de pontos finais da rede do Private Service Connect.
- Defina o tipo de destino do Private Service Connect como API Google global.
- Selecione HTTPS para o protocolo.
Na secção Back-ends, clique no menu Novo back-end e selecione um grupo de pontos finais da rede do Private Service Connect.
Se precisar de criar um novo grupo de pontos finais da rede do Private Service Connect, clique em Criar NEG do PSC.
Clique em Concluído.
Clique em Criar.
Certifique-se de que cada serviço de back-end que quer adicionar está selecionado no menu Criar ou selecionar serviços de back-end e, de seguida, clique em OK.
Regras de encaminhamento
O conjunto de regras para encaminhar pedidos HTTPS recebidos para serviços de back-end específicos é denominado mapa de URLs. Para saber mais acerca dos mapas de URLs, consulte a vista geral dos mapas de URLs.
Se estiver a configurar apenas um serviço de back-end para o balanceador de carga, a regra de encaminhamento predefinida é suficiente e pode avançar para Rever e finalizar.
Se estiver a configurar vários serviços de back-end, tem de criar um matcher de caminho para cada serviço de back-end. Cada regra de anfitrião só pode fazer referência a um correspondente de caminho, mas duas ou mais regras de anfitrião podem fazer referência ao mesmo correspondente de caminho.
- Se tiver mais do que um serviço de back-end, clique em Regras de encaminhamento.
- Selecione Regra simples de anfitrião e caminho.
- Para cada back-end, faça o seguinte:
- Clique em Adicionar regra de anfitrião e caminho.
- Para Anfitrião, introduza o nome de anfitrião que vai ser usado para enviar pedidos a este serviço, por exemplo,
pubsub.example.com
. - Para Caminhos, introduza o caminho, por exemplo,
/*
. - Para Back-ends, selecione o serviço de back-end.
Reveja e finalize
- Clique em Rever e finalizar para rever a configuração.
- Clique em Criar.
gcloud
Para cada API Google global à qual quer aceder, faça o seguinte:
Para criar um serviço de back-end global, use o comando
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --global
Substitua
BACKEND_SERVICE_NAME
pelo nome do serviço de back-end.Para adicionar um NEG ao serviço de back-end correspondente, use o comando
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
Substitua o seguinte:
NEG_NAME
: o nome do NEG do Private Service Connect.REGION
: a região do NEG do Private Service Connect.
Para criar um mapa de URLs global para o balanceador de carga, use o comando
gcloud compute url-maps create
.Um mapa de URLs tem de fazer referência a um serviço de back-end predefinido. Se estiver a configurar o balanceador de carga com um serviço de back-end, defina esse serviço de back-end como o predefinido. Se estiver a configurar o balanceador de carga para usar vários serviços de back-end, escolha um dos serviços de back-end para ser a predefinição do mapa de URLs.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME
Substitua o seguinte:
URL_MAP_NAME
: um nome para o mapa de URLs.DEFAULT_BACKEND_SERVICE_NAME
: o nome do serviço de back-end predefinido do balanceador de carga. A predefinição é usada quando nenhuma regra de anfitrião corresponde ao nome de anfitrião pedido.
Opcional: se estiver a configurar o equilibrador de carga para usar vários serviços de back-end, conclua este passo. Se o seu mapa de URLs apenas fizer referência a um serviço de back-end, ignore este passo.
Para adicionar serviços de back-end adicionais ao mapa de URLs, use o comando
gcloud compute url-maps add-path-matcher
.Para cada serviço de back-end, adicione um correspondente de caminho e uma ou mais regras de anfitrião. Tem de criar um correspondente de caminho para cada serviço de back-end. Cada regra de anfitrião só pode referenciar um correspondente de caminho, mas duas ou mais regras de anfitrião podem referenciar o mesmo correspondente de caminho.
gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=PATH_MATCHER \ --default-service=BACKEND_SERVICE_NAME \ --new-hosts=HOSTNAMES
Substitua o seguinte:
PATH_MATCHER
: um nome para o correspondente de caminhos.BACKEND_SERVICE_NAME
: o nome do serviço de back-end.HOSTNAMES
: um ou mais nomes de anfitrião para enviar pedidos para o serviço de back-end, por exemplo,pubsub.example.com
. Pode introduzir vários nomes de anfitriões numa lista separada por vírgulas.
Para criar um proxy HTTPS de destino, use o comando
gcloud compute target-https-proxies create
.gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME
Substitua o seguinte:
PROXY_NAME
: um nome para o proxy HTTPS de destino.URL_MAP_NAME
: o nome do mapa de URLs.CERTIFICATE_NAME
: o nome do recurso do certificado.
Para criar uma regra de encaminhamento global para o balanceador de carga, use o comando
gcloud compute forwarding-rules create
.gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --address=IP_ADDRESS \ --ports=443 \ --target-https-proxy=PROXY_NAME \ --subnet=SUBNET \ --subnet-region=SUBNET_REGION \ --global
Substitua o seguinte:
RULE_NAME
: o nome da regra de encaminhamento.NETWORK
: a rede VPC da regra de encaminhamento. Esta rede tem de conter uma sub-rede só de proxy na região onde está a criar o balanceador de carga.IP_ADDRESS
: o endereço IP interno da regra de encaminhamento, que tem de estar dentro do intervalo de endereços IP da sub-rede da regra de encaminhamento. Para usar um endereço IP efémero específico, introduza o endereço IP, por exemplo,10.0.0.5
. Para usar um endereço IP interno estático, introduza o nome do endereço IP. Para permitir que Google Cloud selecione um endereço IP efémero, omita esta flag.SUBNET
: a sub-rede da regra de encaminhamento.SUBNET_REGION
: a região da sub-rede da regra de encaminhamento.
API
Para cada API Google global à qual quer aceder, faça o seguinte:
Para criar um serviço de back-end global, faça um pedido
POST
ao métodobackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices { "loadBalancingScheme": "INTERNAL_MANAGED", "name": "BACKEND_SERVICE_NAME", "protocol": "HTTPS" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto.BACKEND_SERVICE_NAME
: o nome do serviço de back-end.
Para adicionar um NEG ao serviço de back-end correspondente, faça um pedido ao método
backendServices.patch
.PATCH
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG_NAME" } ] }
Substitua o seguinte:
REGION
: a região do NEG.NEG_NAME
: o nome do grupo de pontos finais da rede a adicionar.
Para criar um mapa de URLs global para o balanceador de carga, faça um pedido
POST
ao métodourlMaps.insert
.Um mapa de URLs tem de fazer referência a um serviço de back-end predefinido. Se estiver a configurar o balanceador de carga com um serviço de back-end, defina esse serviço de back-end como o predefinido. Se estiver a configurar o balanceador de carga para usar vários serviços de back-end, escolha um dos serviços de back-end para ser a predefinição do mapa de URLs.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps { "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/DEFAULT_BACKEND_SERVICE_NAME", "name": "URL_MAP_NAME" }
Substitua o seguinte:
DEFAULT_BACKEND_SERVICE_NAME
: o nome do valor predefinido do equilibrador de carga. A predefinição é usada quando nenhuma regra de anfitrião corresponde ao nome de anfitrião pedido.URL_MAP_NAME
: um nome para o mapa de URLs.
Se estiver a configurar o equilibrador de carga para usar vários serviços de back-end, conclua este passo. Se o seu mapa de URLs apenas fizer referência a um serviço de back-end, ignore este passo.
Para adicionar serviços de back-end adicionais ao mapa de URLs, faça um pedido
PATCH
ao métodourlMaps.patch
.Para cada serviço de back-end, adicione um correspondente de caminho e uma ou mais regras de anfitrião. Tem de criar um correspondente de caminho para cada serviço de back-end. Cada regra de anfitrião só pode referenciar um correspondente de caminho, mas duas ou mais regras de anfitrião podem referenciar o mesmo correspondente de caminho.
Pode adicionar vários correspondentes de caminhos e regras de anfitriões fazendo um único pedido de API.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME { "pathMatchers": [ { "name": "PATH_MATCHER_NAME_1", "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_1" }, { "name": "PATH_MATCHER_NAME_2", "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_2" } ], "hostRules": [ { "hosts": ["HOSTNAME_1"], "pathMatcher": "PATH_MATCHER_NAME_1" }, { "hosts": ["HOSTNAME_2"], "pathMatcher": "PATH_MATCHER_NAME_2" } ] }
Substitua o seguinte:
PATH_MATCHER_NAME_1
: um nome para o primeiro correspondente de caminho.BACKEND_SERVICE_NAME_1
: o nome do primeiro serviço de back-end.PATH_MATCHER_NAME_2
: um nome para o segundo correspondente de caminho.BACKEND_SERVICE_NAME_2
: o nome do segundo serviço de back-end.HOSTNAME_1
: o nome do anfitrião para enviar pedidos para o primeiro serviço, por exemplo,pubsub.example.com
.HOSTNAME_2
: o nome de anfitrião para enviar pedidos para o segundo serviço.
Para criar um proxy HTTPS de destino, faça um pedido
POST
aotargetHttpsProxies.insert
método.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies { "name": "PROXY_NAME", "sslCertificates": [ "https://certificatemanager.googleapis.com/v1/projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME" ], "urlMap": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto.PROXY_NAME
: um nome para o proxy HTTPS de destino.CERTIFICATE_NAME
: o nome do recurso do certificado.URL_MAP_NAME
: o nome do mapa de URLs.
Para criar uma regra de encaminhamento global para o seu balanceador de carga, faça um
POST
pedido ao métodoglobalForwardingRules.insert
. A rede da regra de encaminhamento tem de conter uma sub-rede só de proxy na sub-rede da região da regra de encaminhamento.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "IPAddress": "IP_ADDRESS", "loadBalancingScheme": "INTERNAL_MANAGED", "name": "FORWARDING_RULE_NAME", "network": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "portRange": "443", "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME", "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies/PROXY_NAME" }
Substitua o seguinte:
IP_ADDRESS
: o endereço IP interno da regra de encaminhamento, que tem de estar dentro do intervalo de endereços IP da sub-rede da regra de encaminhamento. Para usar um endereço IP efémero específico, indique o endereço IP, por exemplo,10.0.0.5
. Para usar um endereço IP interno estático, indique o nome do endereço IP. Para permitir que o utilizador Google Cloud selecione um endereço IP efémero, omita este campo.FORWARDING_RULE_NAME
: o nome da regra de encaminhamento.NETWORK_NAME
: o nome da rede VPC da regra de encaminhamento. Esta rede tem de conter uma sub-rede só de proxy na região onde está a criar o balanceador de carga.SUBNET_REGION
: a região da sub-rede da regra de encaminhamento.SUBNET_NAME
: o nome da sub-rede da regra de encaminhamento.
Valide a configuração
Para testar a ligação do seu back-end às APIs Google globais, faça o seguinte:
- Se não tiver uma, crie uma instância de máquina virtual (VM) na rede VPC onde configurou o back-end.
- Certifique-se de que não criou regras de firewall nem políticas de firewall que substituam a regra de saída de permissão de IPv4 implícita.
- Estabeleça ligação à VM.
Na VM, use
curl
para verificar se pode consultar cada API. Este comando define o cabeçalhoHost
e ignora a resolução de DNS especificando um endereço IP definido pelo utilizador.Pode ignorar a validação de certificados com a flag
-k
. Pode ter de ignorar a validação se usou um certificado autoassinado para configurar o proxy HTTPS de destino ou se a VM não tiver o certificado da autoridade de certificação que assinou o seu certificado.curl -iv --resolve HOSTNAME:443:IP_ADDRESS \ 'https://HOSTNAME/RESOURCE_URI'
Substitua o seguinte:
HOSTNAME
: o nome de anfitrião que configurou no mapa de URLs, por exemplo,pubsub.example.com
.IP_ADDRESS
: o endereço IP da regra de encaminhamento do balanceador de carga.RESOURCE_URI
: o resto do URI do recurso que quer usar para validação. Por exemplo, se o equilibrador de carga estiver a encaminhar pedidos para um ponto final regional do Pub/Sub, pode usar$discovery/rest?version=v1
.
Configure registos de DNS
Configure os registos DNS para cada anfitrião que adicionou ao mapa de URLs, apontando para o endereço IP da regra de encaminhamento. Se estiver a usar o Cloud DNS para gerir o DNS, consulte o artigo Adicione, modifique e elimine registos. Caso contrário, configure os registos de DNS no seu servidor DNS.
Por exemplo, suponhamos que criou as seguintes configurações:
Um NEG do Private Service Connect que usa o serviço de destino
pubsub.googleapis.com
.Um Application Load Balancer interno entre regiões que usa esse NEG do Private Service Connect como back-end.
Um mapa de URLs que define uma regra de anfitrião para
pubsub.example.com
.
Para que esta configuração funcione corretamente, tem de criar um registo DNS que
aponte pubsub.example.com
para o endereço IP da regra de encaminhamento.
Com esta configuração, todos os pedidos enviados para pubsub.example.com
são enviados
para o balanceador de carga, que encaminha o pedido para pubsub.googleapis.com
.
Configure os clientes para enviar pedidos ao back-end
Para enviar pedidos através do back-end em vez dos pontos finais de serviço público,
tem de configurar os clientes para enviar pedidos para o nome do anfitrião que definiu no
mapa de URLs do balanceador de carga, por exemplo, pubsub.example.com
. Consulte a documentação do seu cliente ou biblioteca 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.