Présentation de l'annuaire des services

L'annuaire des services est un service couvert par les obligations de Google définies dans l'Avenant relatif au traitement des données dans le cloud.

L'annuaire des services est un emplacement unique permettant de publier, de découvrir et de se connecter aux services de manière cohérente et fiable, quel que soit leur environnement. L'Annuaire des services est compatible avec les services dans les environnements Google Cloud, multicloud et sur site, et peut évoluer jusqu'à des milliers de services et de points de terminaison pour un seul projet.

L'annuaire des services présente les fonctionnalités suivantes:

  • Une API d'enregistrement et de recherche pour créer et résoudre des espaces de noms, des services et des points de terminaison
  • Intégration à Cloud DNS. Les zones de répertoire de services permettent de rendre les services disponibles sur un cloud privé virtuel (VPC).
  • Intégration IAM pour attribuer et contrôler la visibilité et les autorisations des services
  • Prise en charge intégrée de la Google Cloud CLI et de la console Google Cloud pour interagir avec le Service Directory
  • Intégration de Cloud Monitoring et de Cloud Logging pour surveiller, auditer et déboguer les opérations du Service Directory

Pourquoi utiliser l'annuaire des services ?

À mesure que les applications adoptent des services, il devient plus difficile de résoudre l'emplacement d'un service, car les points de terminaison de ces services changent. Les services déployés dans des environnements hybrides présentent des obstacles supplémentaires, car aucun d'eux ne peut partager le même système de dénomination, ce qui complique la résolution et la connexion des services. Pour illustrer le problème, prenons l'exemple suivant.

Imaginez que vous créez une API simple et que votre code doit appeler une autre application. Lorsque les informations sur les points de terminaison restent statiques, vous pouvez coder en dur ces emplacements dans votre code ou les stocker dans un petit fichier de configuration. Toutefois, avec les microservices et le multicloud, ce problème devient beaucoup plus difficile à résoudre, car les instances, les services et les environnements peuvent tous changer.

Service Directory sans équilibreur de charge (cliquez pour agrandir)
Différents services de modification (cliquez pour agrandir)

Avec l'Annuaire des services, vous pouvez enregistrer tous vos services au même endroit et les résoudre à l'aide de HTTP, gRPC et DNS.

Revenons au schéma précédent, mais cette fois, ajoutons le service d'annuaire. Dans le diagramme suivant, chaque instance de service est enregistrée auprès de l'annuaire des services. Ces enregistrements sont immédiatement reflétés dans le DNS et peuvent être interrogés à l'aide d'HTTP/gRPC, quel que soit leur implémentation et leur environnement.

Répertoire de services avec un équilibreur de charge (cliquez pour agrandir)
Annuaire des services avec un équilibreur de charge (cliquez pour agrandir)

Vous pouvez créer un nom de service universel qui fonctionne pour tous les Google Cloud produits, comme App Engine et GKE. Vous pouvez rendre ces services disponibles via le DNS. Vous pouvez appliquer des contrôles d'accès aux services en fonction des rôles réseau, de projet et IAM des comptes de service.

L'annuaire des services résout les problèmes suivants:

  1. Interopérabilité: l'annuaire des services est un service de dénomination universel qui fonctionne sur Google Cloud, multicloud et sur site. Vous pouvez migrer des services entre ces environnements et continuer à utiliser le même nom de service pour enregistrer et résoudre les points de terminaison.
  2. Gestion des services: l'Annuaire des services est un service géré. Votre organisation n'a pas à se soucier de la haute disponibilité, de la redondance, de l'évolutivité ni de la maintenance de votre propre registre de services.
  3. Contrôle des accès: avec le Service Directory, vous pouvez contrôler qui peut enregistrer et résoudre vos services à l'aide d'IAM. Attribuez des rôles Service Directory à des équipes, des comptes de service et des organisations.
  4. Limites du DNS pur: les résolveurs DNS peuvent être peu fiables en termes de respect des TTL et de mise en cache, ne peuvent pas gérer des tailles d'enregistrement plus importantes et ne permettent pas de diffuser facilement des métadonnées aux utilisateurs. En plus de la prise en charge du DNS, l'annuaire de services propose des API HTTP et gRPC pour interroger et résoudre les services.

Utiliser Cloud DNS avec l'annuaire des services

Cloud DNS est un service DNS (Domain Name System) rapide, évolutif et fiable, qui s'exécute sur l'infrastructure de Google.

En plus des zones DNS publiques, Cloud DNS fournit également une solution DNS interne gérée pour les réseaux privés surGoogle Cloud. Les zones DNS privées vous permettent de nommer vos instances de machine virtuelle (VM), équilibreurs de charge ou autres ressources en interne. Les requêtes DNS pour ces zones DNS privées sont limitées à vos réseaux privés.

Le schéma suivant montre comment utiliser les zones de l'annuaire des services pour rendre les noms de service disponibles à l'aide de recherches DNS.

Utilisation de Cloud DNS avec l'Annuaire des services (cliquez pour agrandir)
Utiliser Cloud DNS avec l'Annuaire des services (cliquez pour agrandir)

Présentation des différents composants:

  1. Les points de terminaison sont enregistrés directement dans l'annuaire des services à l'aide de l'API de l'annuaire des services. Vous pouvez enregistrer des servicesGoogle Cloud et nonGoogle Cloud dans l'annuaire des services.
  2. Les clients externes et internes peuvent rechercher ces services à l'adresse: https://servicedirectory.googleapis.com
  3. Pour activer les requêtes DNS, créez une zone de l'annuaire des services dans Cloud DNS associée à un espace de noms de l'annuaire des services.
  4. Les clients internes peuvent résoudre ce service à l'aide de DNS, HTTP et gRPC. Les clients externes (clients qui ne se trouvent pas sur le réseau privé) doivent utiliser HTTP ou gRPC pour résoudre les noms de service.

Exemple de configuration

Exposer un service via DNS

Le schéma suivant illustre comment une architecture de microservices est modélisée dans le répertoire de services et mise à disposition à l'aide du DNS. Notez que l'annuaire des services gère entièrement les services et les points de terminaison, mais que la zone privée se trouve dans Cloud DNS.

Exposer un service via le DNS (cliquez pour agrandir)
Exposer un service via DNS (cliquez pour agrandir)

Dans ce diagramme (côté gauche), le service payments est enregistré dans un espace de noms nommé backend-namespace, la région us-east1 et le projet gcp-project. L'espace de noms est associé à la zone privée example.com.

Pour effectuer une recherche DNS, le client demande l'enregistrement SRV pour le nom de domaine _payments._tcp.payments.example.com, qui se résout en numéros de port et en enregistrements d'adresse pour les points de terminaison du service de paiement.

Étape suivante

  • Pour savoir comment configurer un espace de noms Service Directory, créer un service dans l'espace de noms et attribuer des points de terminaison à un service, consultez Configurer l'annuaire des services.
  • Pour savoir comment créer une zone de l'Annuaire des services qui exploite un espace de noms existant, consultez la section Configurer une zone DNS dans l'Annuaire des services.
  • Pour savoir comment interroger une zone de l'annuaire des services existante à l'aide du DNS, consultez la section Interroger à l'aide de DNS.
  • Pour trouver des solutions aux problèmes courants que vous pouvez rencontrer lors de l'utilisation de Service Directory, consultez la page Dépannage.