Activer Oracle Cloud Infrastructure Service Mesh pour vos applications Kubernetes

Les clients Oracle Cloud Infrastructure (OCI) sont de plus en plus passés à une architecture de microservices qui, avec ses avantages, apporte également de nouveaux défis. Dans une architecture de microservices, les applications monolithiques sont divisées en microservices plus petits qui communiquent via le réseau à l'aide d'une API. Cela entraîne une augmentation du trafic réseau et augmente la complexité et la surface d'attaque globale dans l'architecture.

L'ajout d'un maillage de service aux microservices atténue de nombreux défis introduits par une architecture de microservices et offre les avantages suivants :
  • Permet de contrôler le flux de trafic des microservices.
  • Offre une visibilité sur vos applications.
  • Permet aux microservices de se connecter en toute sécurité sans modifier le code de l'application.
Avec OCI Service Mesh, vous pouvez déployer une architecture de maillage de services gérés vers vos clusters Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE). Cette architecture de référence fournit un exemple détaillé d'architecture OCI Service Mesh déployée dans un cluster OKE.

Fonctionnalités d'OCI Service Mesh

Sécurité
  • Application des politiques liées à la sécurité

    OCI Service Mesh utilise des stratégies d'accès pour définir des règles d'accès. Les stratégies d'accès appliquent la communication entre les microservices et autorisent uniquement les demandes validées provenant de l'application et de l'extérieur. Les stratégies d'accès sont également utilisées pour définir les communications autorisées avec les services externes.

  • Zéro confiance

    OCI Service Mesh implémente automatiquement une architecture de sécurité de confiance zéro sur tous les microservices. Les données entre les microservices sont cryptées. L'identification du microservice au microservice est requise au début de la communication. Les deux parties doivent échanger leurs identifiants avec leurs informations d'identité. Cela permet aux services de s'identifier mutuellement pour déterminer s'ils sont autorisés à interagir. Cette opération est implémentée avec TLS mutuel avec rotation automatisée des certificats et des clés à l'aide du service Oracle Cloud Infrastructure Certificates (OCI Certificates) et d'Oracle Key Management Cloud Service pour gérer les certificats et les clés.

Gestion du trafic
  • Déplacement de trafic

    OCI Service Mesh vous permet d'effectuer des déploiements de canari. Lorsque vous publiez une nouvelle version de votre code en production, vous autorisez seulement une partie du trafic à l'atteindre. Cette fonctionnalité vous permet d'effectuer un déploiement rapide et de perturber au minimum votre application. Vous pouvez définir des règles de routage qui régissent toutes les communications entre microservices à l'intérieur du maillage. Vous pouvez acheminer une partie du trafic vers une certaine version du service.

Observation
  • Surveillance et journalisation

    OCI Service Mesh est particulièrement bien placé pour fournir des informations de télémétrie car toutes les communications inter-microservices doivent passer par elle. Cela permet au maillage de service de capturer des données de télémétrie telles que la source, la destination, le protocole, l'URL, la durée, le code de statut, la latence, la journalisation et d'autres statistiques détaillées. Vous pouvez exporter les informations de journalisation vers le service Oracle Cloud Infrastructure Logging (OCI Logging). OCI Service Mesh fournit deux types de journaux : les journaux d'erreurs et les journaux de trafic. Vous pouvez utiliser ces journaux pour déboguer les problèmes 404 ou 505 ou générer des statistiques basées sur les journaux. Les mesures et les données de télémétrie peuvent être exportées vers Prometheus et visualisées avec Grafana. Les deux peuvent être déployés directement dans un cluster OKE.

Architecture

Oracle Cloud Infrastructure Service Mesh (OCI Service Mesh) utilise un modèle sidecar. Cette architecture encapsule le code implémentant la fonctionnalité réseau dans un proxy réseau, puis s'appuie sur le trafic depuis et vers les services à rediriger vers le proxy sidecar. Il est appelé sidecar parce qu'un proxy est attaché à chaque application, un peu comme un sidecar attaché à une moto. Dans OKE, le conteneur d'application se trouve à côté du conteneur sidecar proxy dans le même pod. Comme ils se trouvent dans le même pod, ils partagent le même espace de noms réseau et la même adresse IP, ce qui permet aux conteneurs de communiquer via "localhost".

OCI Service Mesh comprend les deux principaux composants suivants :
  • Plan de contrôle

    Le plan de contrôle OCI Service Mesh gère et configure l'ensemble des proxies pour acheminer le trafic. Il gère le transfert, la vérification de l'état, l'équilibrage de charge, l'authentification, l'autorisation et l'agrégation de la télémétrie. Le plan de contrôle interagit avec le service de certificat OCI et le service de gestion des clés OCI pour fournir à chaque proxy son certificat.

  • Plan de données

    Le plan de données est composé de la collection de proxies sidecar déployés dans l'environnement et est responsable de la sécurité, des fonctions réseau et de l'observabilité de l'application. Ils collectent et signalent également la télémétrie sur tout le trafic maillé. Le proxy Envoy est utilisé pour le plan de données d'OCI Service Mesh.

Le schéma suivant illustre cette architecture de référence.



oci_service_mesh_oke_arch-oracle.zip

Cette architecture de référence présente une application déployée dans un cluster OKE avec trois services. L'espace de noms dans lequel l'application est déployée a été "maillé". Un espace de noms "maillé" indique que les services déployés dans l'espace de noms feront partie d'un maillage de services et que chaque nouveau pod déployé sera injecté avec un conteneur de proxy envoyé. A mesure que chaque pod est déployé, les configurations et les certificats sont envoyés à chacun des conteneurs proxy par le plan de contrôle OCI Service Mesh. Le plan de contrôle OCI Service Mesh communique avec le service OCI Certificates et Oracle Key Management Cloud Service afin d'obtenir des certificats pour chaque proxy.

Une passerelle entrante est déployée pour fournir un accès externe à l'application. La passerelle entrante fait partie du plan de données OCI Service Mesh et est également un proxy envoyé qui reçoit la configuration et les certificats du plan de contrôle OCI Service Mesh.

Il incombe au conteneur proxy d'effectuer le repérage de service, le cryptage du trafic et l'authentification auprès du service de destination. Les conteneurs proxy appliquent également des stratégies réseau telles que la répartition du trafic entre les différentes versions de service et appliquent des stratégies d'accès. La passerelle entrante effectue la même fonction pour le trafic en dehors du maillage de service.

Prometheus et Grafana sont déployés dans le cluster OKE dans un espace de noms distinct qui ne fait pas partie du maillage de services. Le plan de données du maillage de services envoie des statistiques d'exploitation clés telles que la latence, les échecs, les demandes et la télémétrie au déploiement Prometheus. Grafana extrait les données du déploiement Prometheus, qui peut être utilisé pour créer des tableaux de bord pour la visualisation.

OCI Service Mesh est intégré au service OCI Logging et la journalisation peut être activée lors de la création du maillage de service. OCI Service Mesh fournit deux types de journaux : les journaux d'erreurs et les journaux de trafic. Ces journaux peuvent être utilisés pour déboguer 404 ou 505 problèmes ou générer des statistiques basées sur les journaux.

Cette architecture comporte les services OCI suivants :

  • OCI Kubernetes Engine (OKE)

    Offre un cluster Kubernetes hautement disponible et évolutif prêt à l'emploi pour le déploiement de vos applications en conteneur dans le cloud.

  • équilibreur de charge

    Permet d'accéder à la passerelle entrante dans le cluster OKE. L'entrée dirige le trafic vers les services demandés dans le cluster OKE.

  • Autorité de certification

    Gère les certificats TLS pour le service OCI Service Mesh.

  • Key Management

    Gère les clés utilisées par le service d'autorité de certification.

L'architecture comprend les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique précise, incluant un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (entre pays, voire continents).

  • Réseau cloud virtuel (VCN) et sous-réseaux

    Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.

  • Liste de sécurité

    Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés à entrer et à sortir du sous-réseau.

Ressources OCI Service Mesh

Lors de la configuration d'OCI Service Mesh déployé dans un cluster OKE, plusieurs ressources Kubernetes sont définies qui sont mises en correspondance avec les composants clés de votre application.

Le diagramme suivant illustre la mise en correspondance des ressources OCI Service Mesh configurées : stratégies d'accès, passerelle entrante, service virtuel et déploiement virtuel avec les ressources d'application : service K8s, équilibreur de charge de service K8s, déploiements et pods.


Description de oci_service_mesh_oke_config.png
Description de l'image oci_service_mesh_oke_config.png

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent être différentes de l'architecture décrite ici.
  • VCN

    Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher à des sous-réseaux dans le VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresse IP privée standard.

    Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud) auquel vous avez l'intention de configurer des connexions privées.

    Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.

    Lorsque vous concevez les sous-réseaux, tenez compte du flux de trafic et des exigences de sécurité. Attachez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, qui peut servir de limite de sécurité.

  • Bande passante d'équilibreur de charge

    Lors de la création de l'équilibreur de charge, vous pouvez sélectionner une forme prédéfinie qui fournit une bande passante fixe ou indiquer une forme personnalisée (flexible) dans laquelle vous définissez une plage de bande passante et laisser le service redimensionner automatiquement la bande passante en fonction des modèles de trafic. Dans l'une ou l'autre approche, vous pouvez modifier la forme à tout moment après avoir créé l'équilibreur de charge.

Points à prendre en compte

Tenez compte des options suivantes lors du déploiement de cette architecture de référence.

  • Coût

    Le plan de contrôle d'OCI Service Mesh sur le cluster OKE est gratuit. Les clients sont facturés pour l'utilisation des ressources des conteneurs proxy du plan de données Service Mesh. Dans la pratique, toutefois, les clients paient déjà pour les ressources du pool de noeuds dans un cluster OKE. Sauf si l'utilisation des conteneurs proxy pousse l'utilisation du pool de noeuds à plus de 100 %, il n'y a pas de frais supplémentaires pour l'ajout d'OCI Service Mesh à votre architecture de microservices.

  • Disponibilité

    Le plan de contrôle du maillage de services OCI est toujours déployé avec une haute disponibilité.

Accusés de réception

  • Author: Chiping Hwang
  • Contributors: Dusko Vukmanovic, Anupama Pundpal