Activer Oracle Cloud Infrastructure Service Mesh sur vos applications Kubernetes

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

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

Capacités du maillage de services OCI

Sécurité
  • Application des politiques relatives à la sécurité

    Le maillage de services OCI utilise des politiques d'accès pour définir des règles d'accès. Les politiques d'accès appliquent la communication entre les microservices et n'autorisent que les demandes validées provenant de l'intérieur et de l'extérieur de l'application. Les politiques d'accès sont également utilisées pour définir les communications autorisées aux services externes.

  • Fiducie zéro

    Le maillage de services OCI met en oeuvre automatiquement une architecture de sécurité sans confiance pour tous les microservices. Les données entre microservices sont chiffrées. L'identification du microservice au microservice est requise au début de la communication. Les deux parties doivent échanger des informations d'identification avec leurs informations d'identité. Cela permet aux services de s'identifier pour déterminer s'ils sont autorisés à interagir. Ceci est mis en oeuvre avec le protocole TLS mutuel avec rotation automatisée des certificats et des clés à l'aide du service Oracle Cloud Infrastructure Certificates (Certificats OCI) et d'Oracle Key Management Cloud Service pour gérer les certificats et les clés.

Gestion du trafic
  • Déplacement du trafic

    Le maillage de services OCI vous permet d'effectuer des déploiements de test canari. Lorsque vous publiez une nouvelle version de votre code en production, vous n'autorisez qu'une partie du trafic à y accéder. Cette fonction permet un déploiement rapide et réduit au minimum les perturbations de l'application. Vous pouvez définir des règles de routage qui régissent toutes les communications inter-microservices à l'intérieur du maillage. Vous pouvez acheminer une partie du trafic vers une certaine version du service.

Observabilité
  • Surveillance et journalisation

    Le maillage de services OCI occupe une position unique pour fournir des informations de télémétrie, car toutes les communications inter-microservices doivent passer par celui-ci. Cela permet au maillage de services de saisir des données de télémétrie telles que la source, la destination, le protocole, l'URL, la durée, le code d'état, 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 (Journalisation OCI). Le maillage de services OCI fournit deux types de journaux : journaux d'erreurs et journaux de trafic. Vous pouvez utiliser ces journaux pour déboguer des problèmes 404 ou 505 ou générer des statistiques basées sur des 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

Le maillage de services Oracle Cloud Infrastructure (maillage de services OCI) utilise un modèle side-car. 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é side-car parce qu'un proxy est attaché à chaque application, un peu comme un side-car attaché à une moto. Dans OKE, le conteneur d'application se trouve à côté du conteneur sidecar proxy dans le même pod. Comme ils sont 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".

Le maillage de services OCI comporte les deux composants principaux suivants :
  • Plan de contrôle

    Le plan de contrôle du maillage de services OCI gère et configure l'ensemble de la collection de mandataires 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 certificats OCI et le service de gestion des clés OCI pour fournir à chaque mandataire son certificat.

  • Plan de données

    Le plan de données est composé de la collection de mandataires secondaires 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 mandataire Envoy est utilisé pour le plan de données du maillage de services OCI.

Le diagramme 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 mandataire envoyé. Au fur et à mesure du déploiement de chaque pod, les configurations et les certificats sont envoyés à chacun des conteneurs mandataires par le plan de contrôle du maillage de services OCI. Le plan de contrôle du maillage de services OCI communique avec le service Certificats OCI et Oracle Key Management Cloud Service pour obtenir des certificats pour chaque mandataire.

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 du maillage de services OCI et est également un mandataire envoyé qui reçoit la configuration et les certificats du plan de contrôle du maillage de services OCI.

Il incombe au conteneur mandataire d'effectuer la détection des services, le chiffrement 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 différentes versions de service et l'application de stratégies d'accès. La passerelle entrante effectue la même fonction pour le trafic en dehors du maillage de services.

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 défaillances, les demandes et la télémétrie au déploiement Prometheus. Grafana extrait des données du déploiement Prometheus, qui peut être utilisé pour créer des tableaux de bord pour la visualisation.

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

Cette architecture comprend les services OCI suivants :

  • OCI Kubernetes Engine (OKE)

    Offre une grappe Kubernetes prête pour la production hautement disponible et évolutive pour déployer vos applications en conteneur dans le nuage.

  • Équilibreur de charge

    Fournit un accès à la passerelle entrante dans la grappe OKE. Le trafic entrant dirige le trafic vers les services demandés dans la grappe OKE.

  • Autorité de certification

    Gère les certificats TLS pour le service de maillage de services OCI.

  • Gestion des clés

    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 localisée qui contient 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 (dans différents pays ou continents).

  • Réseau en nuage virtuel (VCN) et sous-réseau

    Un VCN est un réseau défini par logiciel personnalisable que vous avez configuré dans une région Oracle Cloud Infrastructure. Comme les réseaux en nuage virtuels traditionnels, ils vous offrent un contrôle sur votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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 spécifient la source, la destination et le type de trafic qui doivent être autorisés à entrer et à sortir du sous-réseau.

Ressources du maillage de services OCI

Lors de la configuration du maillage de services OCI déployé dans une grappe OKE, plusieurs ressources Kubernetes sont définies et mappées avec les composants clés de votre application.

Le diagramme suivant décrit comment les ressources configurées du maillage de services OCI : politiques d'accès, passerelle entrante, service virtuel et mappage de déploiement virtuel à vos 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'illustration oci_service_mesh_oke_config.png

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent différer 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 aux sous-réseaux du VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresses IP privées standard.

    Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur place ou un autre fournisseur de nuage) auquel vous voulez 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 de vos exigences en matière de flux de trafic et 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 de l'é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 spécifier une forme personnalisée (flexible) dans laquelle vous définissez une plage de bande passante et laissez le service ajuster la bande passante automatiquement en fonction des modèles de trafic. Avec l'une ou l'autre approche, vous pouvez modifier la forme en tout temps après avoir créé l'équilibreur de charge.

Points à considérer

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

  • Coût

    Il n'y a aucuns frais pour le plan de contrôle du maillage de services OCI dans la grappe OKE. Les clients sont facturés pour l'utilisation des ressources des conteneurs mandataires pour le plan de données du maillage de services. En pratique, cependant, les clients paient déjà pour les ressources du groupe de noeuds dans une grappe OKE. À moins que l'utilisation des conteneurs mandataires ne pousse l'utilisation du groupe de noeuds à plus de 100 %, il n'y a pas de frais supplémentaires pour l'ajout du maillage de services OCI à votre architecture de microservices.

  • Disponibilité

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

Confirmation

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