O Diretório de serviços é um serviço coberto pelas obrigações do Google estabelecidas no Aditivo sobre tratamento de dados do Cloud.
O Diretório de serviços é um único lugar para publicar, descobrir e conectar serviços de maneira consistente e confiável, seja qual for o ambiente. Diretório de serviços é compatível com serviços em ambientes do Google Cloud, multicloud e no local, e pode escalonar verticalmente 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 à Google Cloud CLI e ao consoleGoogle 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 Service Directory
À medida que os aplicativos adotam serviços, fica mais difícil resolver a localização de um serviço porque 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 multicloud, 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, é possível registrar todos os seus serviços em um único lugar e resolvê-los usando HTTP, gRPC e DNS.
Vamos analisar o diagrama anterior, mas desta vez adicionando Diretório de serviços. No diagrama a seguir, cada instância de serviço é registrada no Diretório de serviços. Esses registros são refletidos imediatamente no DNS e podem ser consultados usando HTTP/gRPC, independente da implementação e do ambiente.
É possível criar um nome de serviço universal que funcione em 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 na rede, no projeto e nos papéis do IAM das contas de serviço.
O Diretório de serviços resolve os seguintes problemas:
- Interoperabilidade: Diretório de serviços é um serviço de nomenclatura universal que funciona em Google Cloud, multicloud e no 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, a redundância, o escalonamento ou a manutenção do 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ços 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 aos TTLs e ao armazenamento em cache, não podem processar tamanhos de registros maiores e não oferecem uma maneira fácil de veicular metadados aos usuários. Além da compatibilidade com 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 Nome 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 interno gerenciada para redes particulares noGoogle Cloud. Com as zonas de DNS particulares, é possível nomear internamente as instâncias de máquina virtual (VM), os balanceadores de carga ou outros recursos. As consultas DNS para essas zonas DNS particulares são restritas às suas redes particulares.
O diagrama a seguir ilustra como usar 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 do Diretório de serviços. É possível registrar serviços do Google Cloud e de terceiros com o Diretório de serviços.Google Cloud
- Clientes externos e internos podem consultar esses serviços em: https://servicedirectory.googleapis.com
- Para ativar as solicitações de 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 (que não estão na rede privada) precisam usar HTTP ou gRPC para resolver nomes de serviço.
Exemplo de configuração
Como expor um serviço por DNS
O diagrama a seguir ilustra como uma arquitetura de microsserviços é modelada no Diretório de serviços e disponibilizada usando 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 busca DNS, o cliente solicita o registro SRV do nome de domínio _payments._tcp.payments.example.com, que é resolvido para os 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 Service Directory.
- Para saber como criar uma zona do Diretório de serviços que aproveita um namespace atual, 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 DNS, consulte Consultar usando DNS.
- Para encontrar soluções para problemas comuns que podem ocorrer ao usar Diretório de serviços, consulte Solução de problemas.