Architecture de service

Last reviewed 2024-04-19 UTC

Un service Kubernetes est une abstraction qui vous permet d'exposer un ensemble de pods comme une entité unique. Les services sont les composants fondamentaux permettant d'exposer et de gérer des applications conteneurisées dans un cluster Kubernetes. Les services de ce plan sont structurés de manière standardisée en termes d'espaces de noms, d'identité, d'exposition des services et de communication interservices.

Espaces de noms

Chaque espace de noms possède son propre ensemble de ressources, telles que des pods, des services et des déploiements. Les espaces de noms vous permettent d'organiser vos applications et de les isoler les unes des autres. Le plan utilise des espaces de noms pour regrouper les services en fonction de leur objectif. Par exemple, vous pouvez créer un espace de noms pour tous vos services d'interface et un espace de noms pour vos services de backend. Ce regroupement facilite la gestion de vos services et le contrôle de l'accès à ceux-ci.

Exposition du service

Un service est exposé à Internet à travers GKE Gateway Controller. GKE Gateway Controller crée un équilibreur de charge à l'aide de Cloud Load Balancing dans une configuration multicluster et multirégionale. Cloud Load Balancing utilise l'infrastructure réseau de Google pour fournir au service une adresse IP Anycast qui permet un accès à faible latence au service. L'accès client au service s'effectue via des connexions HTTPS et les requêtes HTTP client sont redirigées vers HTTPS. L'équilibreur de charge gère les certificats publics à l'aide du gestionnaire de certificats. Les services sont également protégés par Cloud Armor et Cloud CDN. Le schéma suivant montre comment les services sont exposés à Internet.

Services du plan qui sont exposés sur Internet.

Anthos Service Mesh

Le plan utilise Anthos Service Mesh pour l'authentification mutuelle et l'autorisation pour toutes les communications entre les services. Pour ce déploiement, Anthos Service Mesh utilise CA Service afin d'émettre des certificats TLS servant à authentifier les pairs et à vous assurer que seuls les clients autorisés peuvent accéder à un service. L'utilisation de TLS mutuel (mTLS) pour l'authentification permet également de garantir que toutes les communications TCP entre les services sont chiffrées en transit. Pour le trafic entrant dans le maillage de services, le plan utilise GKE Gateway controller.

Services distribués

Un service distribué est une abstraction d'un service Kubernetes qui s'exécute dans le même espace de noms sur plusieurs clusters. Un service distribué reste disponible même si un ou plusieurs clusters GKE sont indisponibles, tant que les clusters opérationnels restants sont en mesure d'absorber la charge. Pour créer un service distribué sur plusieurs clusters, Anthos Service Mesh fournit une connectivité de couche 4 et de couche 7 entre les services d'une application sur tous les clusters de l'environnement. Cette connectivité permet aux services Kubernetes de plusieurs clusters d'agir en tant que service logique unique. Le trafic entre clusters n'est acheminé vers une autre région que si le trafic intrarégional ne peut pas avoir lieu en raison d'une défaillance régionale.

Identité du service

Les services exécutés sur GKE possèdent des identités qui leur sont associées. Le plan configure Workload Identity pour permettre à un compte de service Kubernetes d'agir en tant que compte de service Google Cloud. Chaque instance d'un service distribué dans le même environnement possède une identité commune qui simplifie la gestion des autorisations. Lorsque vous accédez aux API Google Cloud, les services exécutés sous l'identité du compte de service Kubernetes s'authentifient automatiquement en tant que compte de service Google Cloud. Chaque service ne dispose que des autorisations minimales nécessaires pour son fonctionnement.

Étapes suivantes