O diretório de serviço é um serviço coberto pelas obrigações do Google estabelecidas no Adendo sobre processamento de dados do Cloud.
O Diretório de serviços é um único local para publicar, descobrir e se conectar a serviços de maneira consistente e confiável, independentemente do ambiente. O Diretório de serviços oferece suporte a serviços em ambientes Google Cloud, de várias nuvens e locais e pode ser escalonado para milhares de serviços e endpoints em um único projeto.
O Diretório de serviços tem os seguintes recursos:
- Uma API de registro e pesquisa para criar e resolver namespaces, serviços e endpoints
- Integração com o Cloud DNS. As zonas do diretório de serviços permitem que os serviços sejam disponibilizados na nuvem privada virtual (VPC).
- Integração do IAM para atribuir e controlar a visibilidade e as permissões do serviço
- Suporte integrado da Google Cloud CLI e do console do Google Cloud para interagir com o diretório de serviços
- Integração do Cloud Monitoring e do Cloud Logging para monitorar, auditar e depurar operações do Diretório de serviços
Por que usar o diretório de serviços
À medida que os aplicativos adotam serviços, a capacidade de resolver a localização de um serviço fica mais difícil à medida que os endpoints desses serviços mudam. Os serviços implantados em ambientes híbridos apresentam outros obstáculos, já que nenhum deles pode compartilhar o mesmo sistema de nomenclatura, o que dificulta a resolução e a conexão de serviços. Para ilustrar o problema, considere o seguinte.
Imagine que você está criando uma API simples e que seu código precisa chamar outro aplicativo. Quando as informações do endpoint permanecem estáticas, é possível codificar esses locais no código ou armazená-los em um pequeno arquivo de configuração. No entanto, com microsserviços e várias nuvens, esse problema se torna muito mais difícil de resolver, já que instâncias, serviços e ambientes podem mudar.
Com o Diretório de serviços, você pode registrar todos os seus serviços em um único lugar e resolvê-los usando HTTP, gRPC e DNS.
Vamos revisitar o diagrama anterior, mas desta vez adicionando o diretório de serviços. No diagrama a seguir, cada instância de serviço está registrada no Diretório de serviços. Esses registros são refletidos imediatamente no DNS e podem ser consultados usando HTTP/gRPC, independentemente da implementação e do ambiente.
É possível criar um nome de serviço universal que funcione em todos os produtos Google Cloud, como o App Engine e o GKE. É possível disponibilizar esses serviços pelo DNS. É possível aplicar controles de acesso a serviços com base em papéis de rede, projeto e IAM das contas de serviço.
O Diretório de serviços resolve os seguintes problemas:
- Interoperabilidade: o Diretório de serviços é um serviço de nomenclatura universal que funciona em Google Cloud, multicloud e local. É possível migrar serviços entre esses ambientes e ainda usar o mesmo nome de serviço para registrar e resolver endpoints.
- Gerenciamento de serviços: o Diretório de serviços é um serviço gerenciado. Sua organização não precisa se preocupar com a alta disponibilidade, redundância, escalonamento ou manutenção do seu próprio registro de serviço.
- Controle de acesso: com o Service Directory, é possível controlar quem pode registrar e resolver seus serviços usando o IAM. Atribua papéis do Diretório de serviço a equipes, contas de serviço e organizações.
- Limitações do DNS puro: os resolvedores de DNS podem não ser confiáveis em termos de respeito a TTLs e armazenamento em cache, não podem processar tamanhos de registro maiores e não oferecem uma maneira fácil de enviar metadados aos usuários. Além do suporte a DNS, o Diretório de serviços oferece APIs HTTP e gRPC para consultar e resolver serviços.
Usar o Cloud DNS com o Diretório de serviços
O Cloud DNS é um serviço de Sistema de Nomes de Domínio (DNS) rápido, escalonável e confiável executado na infraestrutura do Google.
Além das zonas de DNS públicas, o Cloud DNS também oferece uma solução de DNS interna gerenciada para redes particulares no Google Cloud. As zonas DNS particulares permitem que você nomeie internamente instâncias de máquina virtual (VM), balanceadores de carga ou outros recursos. As consultas DNS para essas zonas particulares de DNS são restritas às suas redes particulares.
O diagrama a seguir ilustra como usar as zonas do Diretório de serviços para disponibilizar nomes de serviço usando pesquisas de DNS.
Visão geral dos componentes individuais:
- Os endpoints são registrados diretamente no Diretório de serviços usando a API Service Directory. É possível registrar serviçosGoogle Cloud e nãoGoogle Cloud com o Diretório de serviços.
- Os clientes externos e internos podem procurar esses serviços em: https://servicedirectory.googleapis.com
- Para ativar as solicitações DNS, crie uma zona do Diretório de serviços no Cloud DNS associada a um namespace do Diretório de serviços.
- Os clientes internos podem resolver esse serviço usando DNS, HTTP e gRPC. Os clientes externos (clientes que não estão na rede particular) precisam usar HTTP ou gRPC para resolver nomes de serviço.
Exemplo de configuração
Como expor um serviço pelo DNS
O diagrama a seguir ilustra como uma arquitetura de microsserviço é modelada no diretório de serviços e disponibilizada usando o DNS. O Diretório de serviços mantém os serviços e endpoints por completo, mas a zona particular está no Cloud DNS.
Neste diagrama (lado esquerdo), o serviço payments está registrado em um
namespace com o nome backend-namespace
, a região us-east1
e o
projeto gcp-project
. O namespace está vinculado à zona particular
example.com
.
Para fazer uma pesquisa DNS, o cliente solicita o
registro SRV
do nome de domínio _payments._tcp.payments.example.com
, que
é resolvido nos números de porta e registros de endereço dos endpoints
do serviço de pagamento.
A seguir
- Para saber como configurar um namespace do Diretório de serviços, criar um serviço no namespace e atribuir endpoints a um serviço, consulte Configurar o Diretório de serviços.
- Para saber como criar uma zona do Diretório de serviços que aproveite um namespace existente, consulte Configurar uma zona DNS do Diretório de serviços.
- Para saber como fazer uma consulta em uma zona do Diretório de serviços usando o DNS, consulte Consultar usando o DNS.
- Para encontrar soluções de problemas comuns que podem ser encontrados ao usar o diretório de serviços, consulte Solução de problemas.