Dans Service Mesh (ASM), VirtualService et EnvoyFilter permettent tous deux de personnaliser les en-têtes de requête et de réponse, mais ils diffèrent par leur flexibilité et leurs cas d'utilisation.
Comparaison entre VirtualService et EnvoyFilter
VirtualService convient mieux aux modifications d'en-têtes simples liées au routage, tandis qu'EnvoyFilter permet une personnalisation plus approfondie des proxies Envoy. Choisissez la solution adaptée en fonction de vos besoins et des comparaisons présentées dans le tableau suivant.
|
Élément |
VirtualService |
EnvoyFilter |
|
Niveau d'abstraction |
Offre un niveau d'abstraction supérieur qui vous permet de définir l'ajout ou la suppression d'en-têtes de requête et de réponse directement dans les règles de routage Istio. Cette approche est recommandée car les règles sont plus faciles à comprendre et à configurer. |
Fournit une interface de bas niveau pour gérer directement les configurations du proxy Envoy. EnvoyFilter vous permet d'écrire des scripts Lua personnalisés ou d'utiliser d'autres extensions Envoy pour implémenter une logique complexe. Cette méthode est plus puissante et flexible, mais nécessite une compréhension approfondie des configurations Envoy. |
|
Facilité d'utilisation |
Utilise des CRD Istio standard, ce qui facilite la configuration et la compréhension. |
La configuration est plus complexe et exige une familiarité avec l'API de configuration Envoy. Les erreurs sont plus susceptibles de se produire sans une bonne connaissance du fonctionnement interne d'Envoy. |
|
Portée applicable |
Couvre la plupart des opérations courantes sur les en-têtes : ajout, modification ou suppression d'en-têtes de requête et de réponse. Vous pouvez définir les valeurs d'en-tête sur des chaînes fixes ou générer dynamiquement des valeurs à l'aide d'expressions intégrées. Ces expressions sont entourées du symbole |
Prend en charge la personnalisation avancée et les opérations complexes au-delà de ce qu'offre VirtualService, telles que les vérifications conditionnelles, les transformations de données complexes ou les appels à des services externes. Les valeurs d'en-tête peuvent être calculées dynamiquement via du code. |
|
Cas d'utilisation |
Vous devez uniquement ajouter, supprimer ou modifier des en-têtes, et les opérations sont liées à des règles de routage spécifiques. |
Vous devez effectuer une manipulation approfondie des requêtes ou des réponses, ou modifier les en-têtes globalement sans changer les règles de routage Istio. |