samedi, 20 avril 2024

Utilisation du projet YARP de Microsoft pour proxy des microservices Web

Inner source est l’idée d’utiliser des techniques open source pour développer des outils internes, en utilisant des plateformes telles que GitHub pour la collaboration. Les ingénieurs d’une entreprise identifient les problèmes et les technologies communs et travaillent ensemble pour créer une solution unique à tous leurs problèmes. C’est une technique importante qui peut réduire considérablement les efforts en double. Une grande banque est passée de plus de 10 versions d’un contrôle de grille à une seule.

Mais qu’arrive-t-il à un projet de source interne mature qui pourrait être bénéfique en dehors de l’organisation qui l’a créé ? Certains restent à huis clos, mais d’autres font le saut vers l’open source. C’est le cas avec YARP de Microsoft, un projet qui a commencé dans le but de consolider plusieurs projets de proxy inverse à travers l’entreprise. Son nom est l’acronyme de Yet Another Reverse Proxy, car de nombreuses équipes construisaient et utilisaient déjà divers proxys ou recherchaient des API et des bibliothèques qu’elles pourraient utiliser.

Il est en passe de devenir un élément important du Pile de mise en réseau .NET, aidant à exercer les API client et serveur tout en fournissant un proxy prêt pour les protocoles de nouvelle génération comme HTTP/2 (et à l’avenir, QUIC).

Utilisation de proxys inversés

Les proxys inversés sont un outil de réseau et de sécurité important, fournissant une isolation entre votre infrastructure d’application Web ou API et l’Internet public. Il transmet les demandes aux points de terminaison sans révéler aucun détail du réseau derrière le proxy, garantissant qu’il n’y a pas de connexion directe entre les réseaux internes et externes. Là où cela diffère d’un proxy traditionnel, c’est qu’un proxy inverse gère les connexions qui sont initiées depuis l’extérieur de votre réseau.

Vous pouvez utiliser un proxy inverse à diverses fins, selon l’application qu’il utilise. Dans certains cas, il fournit soit un équilibrage de charge, soit une mise en cache, déplaçant les requêtes sur un pool de serveurs (localement ou globalement) et stockant et transférant du contenu statique ou indépendant du temps. Le proxy peut alors filtrer les attaques par déni de service distribué, protégeant ainsi le réseau interne. Enfin, il peut être utilisé comme un accélérateur, gérant des tâches de calcul intensif comme le décryptage du trafic crypté avant de le transférer vers un serveur interne, réduisant ainsi la charge sur vos serveurs d’applications.

Les développeurs Microsoft ayant besoin de proxys inverses pour tous ces scénarios, ils ont développé de nombreux outils différents. La réunion des équipes a permis de fournir un proxy standard pouvant être configuré pour gérer différents scénarios en ajoutant un middleware pour des fonctionnalités spécifiques à l’application, ainsi qu’en gérant les cas d’utilisation courants de proxy inverse prêts à l’emploi.

Fournir un proxy inverse ouvert basé sur .NET< /span>

Le résultat est un outil .NET qui fonctionne à la fois pour .NET et ASP.NET, dans le but de fournir des bibliothèques ainsi que des modèles pour vous aider à personnaliser l’outil. Cette personnalisation est son principal différenciateur, vous permettant de gérer soit via des fichiers de configuration, soit en l’intégrant dans des outils de gestion d’applications. Si vous devez apporter des modifications à un proxy YARP, vous ne devriez pas avoir à le reconstruire à partir de zéro ; une API de configuration vous permet d’effectuer des modifications à la volée.

Actuellement disponible en tant que code source de release candidate, YARP devrait atteindre un version 1.0 bientôt. La dernière version s’appuie sur toutes les versions .NET Core actuellement prises en charge : 3.1, 5.0 et la prochaine 6.0. Vous pouvez télécharger les archives du code source à partir de la page de publication du projet GitHub , ou de préférence clonez le référentiel localement, puis utilisez les scripts de génération pour télécharger automatiquement le SDK .NET et générer l’outil. Microsoft fournit des instructions pour l’utilisation de Visual Studio 2022, avec un script de démarrage qui charge la version appropriée du SDK .NET.

Vous préférerez probablement .NET 5 ou une version ultérieure, car la version .NET Core 3.1 ne prend pas en charge certaines fonctionnalités clés, notamment la limitation de la télémétrie nécessaire pour surveiller entièrement un proxy. Vous aurez toujours besoin du SDK .NET 5 pour s’appuyer sur .NET Core 3.1, car il nécessite certaines fonctionnalités C# qui ne sont prises en charge que dans les versions ultérieures. D’autres améliorations apportées aux versions plus récentes de .NET incluent une meilleure prise en charge de HTTP/2, nécessaire pour une utilisation avec gRPC.

Une fois construit, vous pouvez gérer le YARP proxy inverse à l’aide des fichiers de configuration. Ceux-ci utilisent des fournisseurs de configuration .NET standard et vous pouvez choisir votre technologie dans le cadre de la création de YARP. Cette approche vous permet de choisir vos propres outils pour fournir des configurations, par exemple dans le cadre d’un outil d’infrastructure en tant que code. La valeur par défaut est JSON, en utilisant le nom sections dans le fichier de configuration pour définir le routage et les clusters de serveurs cibles.

Configuration et utilisation de YARP dans vos propres applications

Cibles de configuration d’itinéraire correspondantes des tableaux ou des chemins vers des clusters définis où les clusters sont des destinations et des adresses pouvant répondre aux demandes d’un itinéraire spécifique. Il existe même la possibilité d’inclure des politiques basées sur les routes à une configuration, telles que l’ajout de règles d’autorisation à une route ou l’assurance que les politiques de partage des ressources d’origine croisée sont appliquées. Le résultat est un ensemble de configurations relativement simple qui peut fournir un routage moderne basé sur des règles.

Les mêmes objets de configuration et collections décrits dans vos fichiers de configuration JSON peuvent être utilisés comme les structures de données pour les paramètres contrôlés par l’application. Il est possible de recharger dynamiquement les paramètres à la volée sans avoir besoin de redémarrer le proxy, donc si vous mettez à l’échelle automatiquement une application sur un serveur Kubernetes ou sur Azure Service Fabric, vous pouvez mettre à jour à mesure que de nouveaux points de terminaison sont ajoutés ou que les anciens sont supprimés.

Une option intéressante dans YARP est la possibilité d’ajouter votre propre middleware vers un proxy, en utilisant le concept de pipeline d’ASP.NET pour ajouter de nouvelles fonctionnalités. Par exemple, vous pouvez disposer d’outils qui rejettent automatiquement les demandes en fonction de règles, en envoyant une réponse personnalisée du proxy sans transmettre de données au cluster proxy. Il est préférable d’utiliser un middleware uniquement sur les en-têtes de demande ; ce n’est pas une bonne idée de modifier le corps des requêtes ou les réponses.

Il existe des transformations intégrées qui modifient les demandes et les réponses, par exemple lorsque vous utilisez un proxy YARP comme accélérateur Secure Sockets Layer, en modifiant les en-têtes et les réponses pour ajouter et supprimer le cryptage si nécessaire. D’autres options ajoutent ou suppriment des paramètres des chaînes de requête, vous permettant de restreindre les requêtes envoyées via un proxy, garantissant que seul un ensemble limité de paramètres est fourni aux serveurs. En contrôlant les requêtes via un proxy, vous pouvez réduire la surface d’attaque et renforcer votre application. Vous pouvez également faire la même chose pour les valeurs de requête, en évitant les requêtes malformées malveillantes.

Au-delà du proxy Web

YARP peut faire partie de l’auto-surveillance de vos applications, avec la possibilité de vérifier régulièrement l’état des points de terminaison. Les demandes peuvent être envoyées à des points de terminaison spécifiques et, selon les réponses, les clusters peuvent être marqués comme sains ou non sains. Les clusters défectueux sont automatiquement bloqués, ce qui vous permet d’effectuer la maintenance pendant que votre application continue de s’exécuter.

Avec la prise en charge de HTTP/2, gRPC et Service Fabric, YARP est un outil important pour quiconque crée des applications ASP.NET à grande échelle, ainsi que pour la prise en charge de microservices basés sur .NET. Cela vaut la peine de passer du temps à créer et à personnaliser vos propres instances, en tirant parti de son architecture en pipeline et de ses configurations programmables.

En créant initialement un outil pour prendre en charge de nombreux projets internes différents, Microsoft a fourni un proxy inverse à usage général qui est bien plus que le plus petit dénominateur commun. Le passage de la source interne à l’open source n’est pas énorme, mais il profite à tout le monde, pas seulement aux équipes de produits internes de Microsoft.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici