Acessar serviços publicados por meio de endpoints
Neste documento, explicamos como acessar serviços em outra rede VPC por endpoints do Private Service Connect. É possível se conectar aos seus próprios serviços ou a provedores fornecidos por outros produtores, incluindo o Google.
Para ver mais informações sobre serviços, consulte Publicar serviços gerenciados.
Papéis
O papel do IAM a seguir fornece as permissões necessárias para executar as tarefas neste guia.
Tarefa | Papéis |
---|---|
Crie um endpoint |
Ambos os papéis: Administrador de rede do Compute ( roles/compute.networkAdmin ) e
EDitor do Diretório de serviços ( roles/servicedirectory.editor )
|
Configure de maneira automática ou manual as entradas DNS para um endpoint. |
Administrador do DNS
(roles/dns.admin )
|
Antes de começar
Leia Sobre a conexão a serviços usando endpoints, incluindo limitações.
Você precisa ativar a API Compute Engine no projeto.
Você precisa ativar a API Service Directory no seu projeto.
Você precisa ativar a API Cloud DNS no seu projeto.
As regras de firewall de saída precisam permitir tráfego para o endereço IP interno do endpoint. A regra de firewall de saída de permissão implícita permite a saída para qualquer endereço IP de destino.
Se você tiver criado regras de firewall de negação de saída na rede VPC ou criado políticas de firewall hierárquicas que modificam o comportamento de saída implícito permitido, o acesso ao endpoint poderá ser afetado. Crie uma regra ou política de firewall específica de permissão de saída para permitir o tráfego para o destino de endereço IP interno do endpoint do serviço.
É necessário ter o URI do anexo de serviço para o serviço. Por exemplo,
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.
Crie um endpoint
Um endpoint se conecta aos serviços em outra rede VPC usando uma regra de encaminhamento do Private Service Connect. Cada regra de encaminhamento é contabilizada na cota por projeto das regras de encaminhamento do Private Service Connect para acessar serviços em outra rede VPC.
Ao usar o Private Service Connect para se conectar a serviços em outra rede VPC, você escolhe um endereço IP interno em uma sub-rede comum na sua rede VPC. O endereço IP precisa estar na mesma região que o anexo do serviço do produtor de serviços. O endereço IP é contabilizado na cota do projeto para endereços IP internos.
É possível usar um endereço IPv4 se a sub-rede for de pilha única. É possível usar um endereço IPv4 ou IPv6 (pré-lançamento) se a sub-rede for de pilha dupla.
A versão do IP do endereço afeta a quais anexos de serviço o endpoint pode se conectar. Para mais informações, consulte Conversão de versão de IP.
Quando você cria um endpoint, ele é
registrado automaticamente no
Diretório de serviços, usando
um namespace escolhido ou o namespace padrão goog-psc-default
.
Se você quiser disponibilizar o endpoint de mais de uma região, ative o acesso global.
Só é possível atualizar o campo de acesso global dos endpoints em serviços publicados. Se você quiser atualizar outros campos, exclua o endpoint e crie um novo.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Clique em Conectar endpoint.
Em Destino, selecione Serviço publicado.
Em Serviço de destino, digite o URI do anexo de serviço ao qual você quer se conectar.
O URI do anexo de serviço está neste formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
Em Nome do endpoint, digite um nome para usar o endpoint.
Selecione uma Rede para o endpoint.
Selecione uma Sub-rede para o endpoint.
Selecione um Endereço IP para o endpoint. Se você precisar de um novo endereço IP, crie um:
- Clique no menu suspenso Endereço IP e selecione Criar endereço IP.
- Digite um Nome e uma Descrição opcional para o endereço IP.
- Selecione uma versão do IP.
Se você estiver criando um endereço IPv4, selecione Atribuir automaticamente ou Deixe-me escolher.
Se você selecionou Quero escolher, insira o Endereço IP personalizado que quer usar.
Clique em Reservar.
Para disponibilizar o endpoint a partir de qualquer região, selecione Ativar acesso global.
Selecione um Namespace na lista suspensa ou crie um novo namespace.
A Região é preenchida com base na sub-rede selecionada.
Clique em Adicionar endpoint.
gcloud
Reserve um endereço IP interno para atribuir ao endpoint.
gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET \ --ip-version=IP_VERSION
Substitua:
ADDRESS_NAME
: o nome a ser atribuído ao endereço IP reservado.REGION
: a região do endereço IP do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.SUBNET
: o nome da sub-rede do endereço IP do endpoint.IP_VERSION
: a versão do IP do endereço IP, que pode serIPV4
ouIPV6
. O padrão éIPV4
. Para especificarIPV6
, o endereço IP precisa estar conectado a uma sub-rede de pilha dupla.
Encontre o endereço IP reservado.
gcloud compute addresses list --filter="name=ADDRESS_NAME"
Crie uma regra de encaminhamento para conectar o endpoint ao anexo de serviço do produtor de serviço. Por padrão, os endpoints estão disponíveis apenas na própria região. Para disponibilizar um endpoint de qualquer região, use a sinalização
--allow-psc-global-access
.Crie um endpoint que só possa ser acessado na própria região.
gcloud compute forwarding-rules create ENDPOINT_NAME \ --region=REGION \ --network=NETWORK_NAME \ --address=ADDRESS_NAME \ --target-service-attachment=SERVICE_ATTACHMENT \ [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
Crie um endpoint que possa ser acessado de qualquer região.
gcloud compute forwarding-rules create ENDPOINT_NAME \ --region=REGION \ --network=NETWORK_NAME \ --address=ADDRESS_NAME \ --target-service-attachment=SERVICE_ATTACHMENT \ --allow-psc-global-access \ [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
Substitua:
ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.REGION
: a região do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.NETWORK_NAME
: o nome da rede VPC do endpoint.ADDRESS_NAME
: o nome do endereço reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviço. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
PROJECT_ID
: o ID do projeto.NAMESPACE
: o namespace do Diretório de serviços que você quer usar. Se você especificar um namespace que não existe, o namespace será criado.Se você omitir a sinalização
--service-directory-registration
, o namespace padrão degoog-psc-default
será usado.
API
Reserve um endereço IP interno para atribuir ao endpoint.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses { "name": "ADDRESS_NAME", "addressType": "INTERNAL", "subnetwork": "SUBNET_URI", "ipVersion": "IP_VERSION" }
Substitua:
PROJECT_ID
: o ID do projeto.ADDRESS_NAME
: o nome a ser atribuído ao endereço IP reservado.SUBNET_URI
: a sub-rede do endereço IP. Use o método network.list ougcloud compute networks subnets list --uri
para encontrar os URLs das suas redes.IP_VERSION
: a versão do IP do endereço IP, que pode serIPV4
ouIPV6
. O padrão éIPV4
. Para especificarIPV6
, o endereço IP precisa estar conectado a uma sub-rede de pilha dupla.
Crie uma regra de encaminhamento para conectar o endpoint ao anexo de serviço do produtor de serviço. Por padrão, os endpoints estão disponíveis apenas na própria região. Para disponibilizar um endpoint de qualquer região, defina
allowPscGlobalAccess
comotrue
.Crie um endpoint que só possa ser acessado na própria região.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules { "name": "ENDPOINT_NAME", "IPAddress": "ADDRESS_URI", "target": "SERVICE_ATTACHMENT", "network": "NETWORK_URI", "serviceDirectoryRegistrations": [ { "namespace": "NAMESPACE" } ] }
Crie um endpoint que possa ser acessado de qualquer região.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules { "name": "ENDPOINT_NAME", "IPAddress": "ADDRESS_URI", "target": "SERVICE_ATTACHMENT", "network": "NETWORK_URI", "allowPscGlobalAccess": true, "serviceDirectoryRegistrations": [ { "namespace": "NAMESPACE" } ] }
Substitua:
PROJECT_ID
: o ID do projeto.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.ADDRESS_URI
: o URL do endereço reservado na rede associada. Use o método endereços.list ougcloud compute addresses list --uri
para encontrar o URL do seu endereço reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviços. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
NETWORK_URI
: a rede VPC do endpoint. Use o método network.list ougcloud compute networks list --uri
para encontrar o URI da sua rede.NAMESPACE
: o namespace do endpoint. Se você especificar um namespace que não existe, o namespace será criado. Se você omitir o camponamespace
, o namespace padrão degoog-psc-default
será atribuído.
Criar um endpoint com um endereço IP de uma rede VPC compartilhada
Os administradores de projetos de serviço podem criar endpoints em projetos de serviço de VPC compartilhada que usam endereços IP de redes VPC compartilhadas conectadas. A criação de endpoints desse tipo não está disponível no console do Google Cloud. Você precisa usar o Google Cloud CLI ou enviar uma solicitação de API. Para mais informações, consulte VPC compartilhada.
Neste exemplo, mostramos como criar um endpoint com um endereço IP de uma rede VPC compartilhada que pode ser acessada de uma única região. Para ativar o acesso global ou escolher um namespace para o Diretório de serviços, consulte Criar um endpoint.
gcloud
- Para reservar um endereço IP interno e atribuir ao endpoint, siga um destes procedimentos:
- No projeto de serviço, reserve um endereço IPv4 ou IPv6 interno estático em uma sub-rede compartilhada da rede VPC compartilhada.
- No projeto host, peça a um administrador do projeto host para reservar um endereço IPv4 ou IPv6 interno estático em uma sub-rede compartilhada da rede VPC compartilhada.
No projeto de serviço, crie o endpoint:
gcloud compute forwarding-rules create ENDPOINT_NAME \ --region=REGION \ --network=projects/HOST_PROJECT/global/networks/HOST_NETWORK \ --address=projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME \ --target-service-attachment=SERVICE_ATTACHMENT
Substitua:
ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.REGION
: a região do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.HOST_PROJECT
: o ID do projeto da rede VPC compartilhada.HOST_NETWORK
: o nome da rede VPC compartilhada que contém o endereço IP do endpoint.ADDRESS_PROJECT
: o ID do projeto em que você reservou o endereço IP. Pode ser o projeto de serviço ou o projeto host.ADDRESS_NAME
: o nome do endereço IP reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviço. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
API
Para reservar um endereço IP interno e atribuir ao endpoint, siga um destes procedimentos:
- No projeto de serviço, reserve um endereço IPv4 ou IPv6 interno estático de uma sub-rede compartilhada da rede VPC compartilhada.
- No projeto host, peça a um administrador do projeto host para reservar um endereço IPv4 ou IPv6 interno estático em uma sub-rede compartilhada da rede VPC compartilhada.
No projeto de serviço, crie o endpoint:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules { "name": "ENDPOINT_NAME", "IPAddress": "projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME", "target": "SERVICE_ATTACHMENT", "network": "projects/HOST_PROJECT/global/networks/HOST_NETWORK" }
Substitua:
PROJECT
: o ID do projeto de serviço.REGION
: a região do endpoint. Precisa ser a mesma região que contém o anexo de serviço do produtor de serviço.ENDPOINT_NAME
: o nome a ser atribuído ao endpoint.ADDRESS_PROJECT
: o ID do projeto em que você reservou o endereço IP. Pode ser o projeto de serviço ou o projeto host.ADDRESS_NAME
: o nome do endereço IP reservado.SERVICE_ATTACHMENT
: o URI do anexo de serviço do produtor de serviço. Por exemplo:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
HOST_PROJECT
: o ID do projeto da rede VPC compartilhada.HOST_NETWORK
: o nome da rede VPC compartilhada que contém o endereço IP do endpoint.
Listar endpoints
É possível listar todos os endpoints configurados.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Os endpoints são exibidos.
gcloud
gcloud compute forwarding-rules list \ --filter 'target~serviceAttachments'
A resposta será semelhante a:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET RULE IP TCP REGION/serviceAttachments/SERVICE_NAME
API
Essa chamada de API retorna todas as regras de encaminhamento, não apenas os endpoints usados para acessar serviços.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.
Ver detalhes do endpoint
É possível visualizar todos os detalhes de configuração de um endpoint, incluindo o status da conexão do endpoint.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Clique no endpoint que você quer visualizar.
gcloud
gcloud compute forwarding-rules describe \ ENDPOINT_NAME --region=REGION
Substitua:
ENDPOINT_NAME
: o nome do endpoint.REGION
: a região do endpoint.
API
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome do endpoint.
Rotular um endpoint
É possível gerenciar rótulos para endpoints. Para instruções detalhadas, consulte Como rotular recursos.
Excluir um endpoint
É possível excluir um endpoint.
No entanto, as seguintes configurações do diretório de serviços não são excluídas quando você exclui o endpoint:
- Namespace do diretório de serviços
- Zona de DNS do Diretório de serviços
O namespace do Diretório de serviços e a zona DNS do Diretório de serviços podem ser usados por outros serviços. Verifique se o namespace está vazio antes de excluir o namespace do Diretório de serviços ou excluir a zona de DNS do Diretório de serviços.
Console
No Console do Google Cloud, acesse a página do Private Service Connect.
Clique na guia Endpoints conectados.
Selecione o endpoint que você quer excluir e clique em Excluir.
gcloud
gcloud compute forwarding-rules delete \ ENDPOINT_NAME --region=REGION
Substitua:
ENDPOINT_NAME
: o nome do endpoint.REGION
: a região do endpoint.
API
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME
Substitua:
PROJECT_ID
: o projeto que contém o endpoint.REGION
: a região do endpoint.ENDPOINT_NAME
: o nome 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 terminar na mesma rede VPC (ou rede VPC compartilhada) como 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.
Se você quiser acessar o endpoint do Private Service Connect usando o nome de DNS, configure sistemas na outra rede para que eles possam fazer consultas às zonas de 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.
Visualizar zonas de DNS do Diretório de serviços
Se os pré-requisitos da configuração automática de DNS forem atendidos, uma
zona DNS é criada com um nome no formato
NAMESPACE--REGION
.
Console
No Console do Google Cloud, acesse a página Zonas do Cloud DNS.
Procure uma zona particular com o nome
NAMESPACE--REGION
.
gcloud
Execute o seguinte comando para listar todas as zonas DNS particulares:
gcloud dns managed-zones list \ --filter="visibility=private"
Execute o comando a seguir para ver os detalhes de uma zona com o nome
NAMESPACE--REGION
.gcloud dns managed-zones describe NAMESPACE--REGION
Se a zona não estiver presente, visualize os detalhes do endpoint e verifique se a configuração do endpoint inclui um valor para o namespace.
Se o endpoint tiver uma configuração de namespace, consulte Configurar uma zona DNS do diretório de serviços.
Se o endpoint não tiver uma configuração de namespace, consulte Registrar um endpoint com o Diretório de serviços.
Outras maneiras de configurar o DNS
Se os pré-requisitos da configuração automática de DNS não forem atendidos, é possível criar entradas DNS de outras maneiras:
Se o endpoint tiver um namespace configurado, consulte Configurar uma zona DNS do diretório de serviços.
Se o endpoint não tiver um namespace configurado, consulte Registrar um endpoint com o Diretório de serviços.
Se você preferir configurar o DNS manualmente, consulte Configurar o DNS manualmente.
Configurar uma zona de DNS do diretório de serviços
Se um endpoint estiver registrado no Diretório de serviços, mas o serviço publicado ao qual ele se conecta não tiver um nome de domínio configurado, nenhuma alteração de DNS será feita.
Se você quiser replicar a configuração automática de DNS, é possível configurar manualmente uma zona DNS do Diretório de serviços com suporte do namespace do Diretório de serviços. Depois que a zona é criada, as entradas DNS do endpoint são criadas automaticamente.
Crie uma zona do Diretório de serviços com a seguinte configuração:
Nome da zona: especifique
NAMESPACE--REGION
, em queNAMESPACE
é o namespace em que o endpoint é registrado eREGION
é a região em que o endpoint é criado.Nome do DNS: o domínio DNS que o fornecedor de serviços está usando para os serviços publicados. Consulte o produtor de serviços para saber mais.
O nome do DNS pode ter o formato
REGION.p.DOMAIN
. Por exemplo, se o domínio público do produtor de serviços forexample.com
e o serviço publicado estiver emus-west1
, recomendamos que ele disponibilize o serviço usando os nomes de domínious-west1.p.example.com
. Inclua um ponto à direita, por exemplo,us-west1.p.example.com.
Namespace do diretório de serviços: o namespace que você configurou para este endpoint.
Visualize os detalhes do endpoint para encontrar o namespace e a região do Diretório de serviços.
Com essa configuração, se você tiver configurado uma zona DNS do Diretório de serviços com o nome DNS us-west1.p.example.com
e criar um endpoint com o nome analytics
, um registro DNS para analytics.us-west1.p.example.com
é criada automaticamente.
Registrar um endpoint com o Diretório de serviços
Novos endpoints são registrados automaticamente no Diretório de serviços. No entanto, se um endpoint foi criado antes da ativação do registro automático com o Diretório de serviços, essa configuração pode estar ausente.
É possível excluir o endpoint e criar um novo, que é registrado no Diretório de serviços automaticamente.
Se preferir, siga estas etapas para registrar um endpoint atual com um namespace do Diretório de serviços.
Crie um namespace do Diretório de serviços para o endpoint
NAMESPACE
.Crie um serviço do diretório de serviços para o endpoint
SERVICE_NAME
.Para o serviço, use o mesmo nome da regra de encaminhamento usada para o endpoint,
ENDPOINT_NAME
.Crie um endpoint do diretório de serviços usando o nome
default
e o endereço IP e a porta (443
) do endpoint.
Depois de registrar o endpoint no Diretório de serviços, siga as instruções para Configurar uma zona DNS do Diretório de serviços.
Configurar o DNS manualmente
Se você tiver impedido a configuração automática de DNS ou se ela não estiver ativada na configuração, poderá usar o Cloud DNS para criar registros DNS manualmente.
Para mais informações, consulte as seguintes páginas:
Controle de acesso: o papel de Administrador de DNS (
roles/dns.admin
) fornece as permissões necessárias para criar zonas e registros DNS.-
Ao configurar uma zona particular, você fornece um nome de DNS. Use o domínio DNS que o fornecedor de serviços está usando para os serviços publicados. Consulte o produtor de serviços para saber mais.
Ele pode ter o seguinte formato:
REGION.p.DOMAIN
. Por exemplo, se o domínio público do produtor de serviços forexample.com
e o serviço publicado estiver emus-west1
, recomendamos que ele disponibilize o serviço usando os nomes de domínious-west1.p.example.com
.
Solução de problemas
Falha na criação da zona de DNS privado
Quando você cria um endpoint, uma zona DNS do diretório de serviços é criada. A criação da zona pode falhar por estes motivos:
Você não ativou a API do Cloud DNS no projeto.
Você não tem as permissões necessárias para criar uma zona de DNS do Diretório de serviços.
Há uma zona DNS com o mesmo nome de zona nessa rede VPC.
Já existe uma zona DNS para o mesmo nome de domínio nesta rede VPC.
Para criar a zona DNS do Diretório de serviços, faça o seguinte:
Verifique se a API do Cloud DNS está ativada no projeto.
Verifique se você tem as permissões necessárias para criar a zona DNS do Diretório de serviços:
dns.managedZones.create
dns.networks.bindPrivateDNSZone
servicedirectory.namespaces.associatePrivateZone
Se houver uma zona conflitante, mas ela não for mais necessária, exclua a zona DNS.
Crie uma zona DNS do Diretório de serviços que tenha o namespace do Diretório de serviços associado ao seu endpoint.
A criação do endpoint falha quando o acesso global é configurado.
Nem todos os serviços publicados do Private Service Connect são compatíveis com endpoints com acesso global. Se você criar um endpoint com acesso global e o serviço publicado não for compatível, você verá esta mensagem de erro:
Private Service Connect global access is not supported for the given forwarding
rule, since its producer service does not support consumer global access.
Crie o endpoint sem a opção de acesso global.
O endpoint foi criado, mas a conectividade não foi estabelecida
Se você tiver criado um endpoint para os serviços publicados, mas a conectividade não tiver sido estabelecida, verifique o status da conexão do endpoint. O status da conexão pode indicar as etapas que você pode seguir para resolver o problema.