Les voies de trafic en mode souple s'appuient sur des ressources de routage personnalisées, telles que les services virtuels et les règles de destination, pour offrir une ingestion unifiée du trafic de bout en bout, un routage fin et un traitement du trafic basé sur des plug-ins.
Présentation des fonctionnalités
Les voies de trafic en mode souple permettent d'isoler les versions d'application. Le système achemine le trafic vers différentes voies selon les en-têtes de requête transmis et les en-têtes de guidage du trafic. Lorsqu'un service d'une voie appelle un autre service, si le service cible n'existe pas dans la voie actuelle, le trafic est redirigé vers la voie de référence. Ce mécanisme garantit l'intégrité de la chaîne d'appels et simplifie la gestion du trafic.
Avant d'utiliser les voies de trafic en mode souple, familiarisez-vous avec les concepts suivants.
Méthodes de transmission du contexte de la chaîne d'appels
La transmission du contexte de la chaîne d'appels est indispensable aux voies de trafic en mode souple. Pour une chaîne d'appels donnée, toutes les requêtes doivent partager le même en-tête de requête.
Les voies de trafic en mode souple prennent en charge les méthodes usuelles de transmission du contexte de la chaîne d'appels. Sélectionnez le scénario adapté à votre application.
Scénario 1 : Transmission d'un ID de trace
Un ID de trace est un en-tête de requête qui présente les caractéristiques suivantes :
L'en-tête de requête traverse toute la chaîne d'appels.
L'en-tête de requête est unique pour chaque chaîne d'appels.
Un ID de trace identifie de manière unique une chaîne d'appels complète. Sa valeur est généralement une chaîne aléatoire. Si votre application est intégrée à un système de traçage, elle transmet vraisemblablement un ID de trace. Les normes de traçage courantes utilisent des en-têtes de requête dédiés aux ID de trace, tels que x-b3-trace-id et x-datadog-trace-id.
Scénario 2 : Transmission d'un en-tête de requête personnalisé
Le code de votre application peut déjà transmettre des en-têtes de requête porteurs de sens métier, comme version ou env. Ces en-têtes identifient souvent la version et l'environnement de la chaîne d'appels. Dans ce cas, utilisez l'en-tête personnalisé transmis comme en-tête de guidage du trafic.
Scénario 3 : Transmission d'un en-tête de requête Baggage
Baggage est un mécanisme standard OpenTelemetry qui permet de transmettre des informations de contexte entre les processus au sein de chaînes d'appels distribuées, en ajoutant un champ Baggage à l'en-tête HTTP. La valeur du champ correspond à un ensemble de paires clé-valeur pouvant contenir des données de contexte telles que des ID de locataire, des ID de trace et des identifiants de sécurité. Cela permet de corréler les traces et les journaux sans modifier le code. Par exemple :
baggage: userId=alice,serverNode=DF%2028,isProduction=false
Baggage constitue la méthode recommandée pour configurer les voies de trafic en mode souple, car il s'agit du mécanisme standard OpenTelemetry dédié à la transmission du contexte de la chaîne d'appels.
Pour les scénarios 1 et 3 : si votre application n'est pas intégrée à un système de traçage ou ne transmet pas Baggage dans son code, vous pouvez recourir à l'instrumentation automatique. Utilisez l'opérateur OpenTelemetry pour injecter les capacités d'instrumentation automatique dans votre application. Cette approche permet de transmettre les en-têtes de requête contenant l'ID de trace sans modifier le code de votre application. Pour configurer l'instrumentation automatique, suivez les étapes décrites dans la documentation communautaire. Vous devez installer l'opérateur OpenTelemetry, configurer l'instrumentation automatique et ajouter des annotations aux pods de votre application. L'instrumentation automatique OpenTelemetry prend en charge de nombreuses normes courantes de transmission du contexte de chaîne d'appels distribuée, telles que W3C Baggage et B3. La documentation communautaire fournit des exemples de transmission de W3C TraceContext et W3C Baggage. Pour plus d'informations, consultez Automatic Instrumentation.
En-tête de guidage du trafic
Les voies de trafic en mode souple utilisent un en-tête de guidage du trafic pour baliser la chaîne de requêtes. Spécifiez tout en-tête de requête qui n'entre pas en conflit avec les en-têtes existants liés au métier de votre application. Selon la méthode choisie pour transmettre le contexte de la chaîne d'appels, les voies de trafic en mode souple garantissent l'inclusion de l'en-tête de guidage du trafic à chaque étape de la chaîne d'appels. La valeur de l'en-tête correspond au nom de la voie de trafic. Par exemple, si vous spécifiez x-asm-prefer-tag comme en-tête de guidage du trafic, lorsqu'une requête est envoyée à un service dans une voie nommée s1, les requêtes suivantes dans la chaîne d'appels portent systématiquement l'en-tête de requête x-asm-prefer-tag: s1. Les voies de trafic exploitent le tag de voie présent dans l'en-tête de requête pour créer des environnements isolés pour différentes versions d'application.
Si vous choisissez de transmettre un en-tête de requête personnalisé, vous devez utiliser ce même en-tête comme en-tête de guidage du trafic.
Présentation des scénarios
Les scénarios suivants illustrent comment router le trafic vers des voies à l'aide de trois méthodes différentes de transmission des en-têtes de requête, et comment configurer des services virtuels personnalisés pour orienter le trafic vers des voies en mode souple.
Références
Les voies de trafic existent en deux modes : Strict et Loose. Pour plus d'informations sur les modes et leurs différences, consultez Présentation des voies de trafic.
Pour utiliser le même en-tête à la fois pour la transmission et le guidage du trafic afin de gérer le trafic de bout en bout, consultez Scénario 2 : Transmission d'un en-tête de requête personnalisé dans la chaîne.
Vous pouvez implémenter des voies de trafic à l'aide de règles de trafic telles que VirtualService et DestinationRule. Vous pouvez également configurer un basculement du trafic. Si une application dotée d'une version ou d'une fonctionnalité spécifique n'est pas disponible, le trafic est envoyé vers une version de basculement désignée. Pour plus d'informations, consultez Implémenter des voies de trafic et un basculement du trafic basés sur des règles de trafic.
Les règles de guidage du trafic pour les voies de trafic incluent des règles de correspondance sur les en-têtes de requête et l'URI de la requête. Pour mettre en œuvre des règles de correspondance plus complexes ou un routage personnalisé, utilisez un service virtuel personnalisé. Pour les détails de configuration, consultez Orienter le trafic vers des voies en mode souple à l'aide d'un service virtuel personnalisé.