Tanto o VirtualService quanto o EnvoyFilter no Service Mesh (ASM) permitem personalizar cabeçalhos de requisição e resposta, mas diferem em flexibilidade e cenários de uso.
Comparação entre VirtualService e EnvoyFilter
O VirtualService é mais adequado para modificações simples de cabeçalhos relacionadas a roteamento, enquanto o EnvoyFilter permite personalização avançada dos proxies Envoy. Escolha a opção conforme seus requisitos e as comparações na tabela a seguir.
|
Item |
VirtualService |
EnvoyFilter |
|
Nível de abstração |
Oferece abstração de alto nível para definir adição ou remoção de cabeçalhos de requisição e resposta diretamente nas regras de roteamento do Istio. Esta abordagem é recomendada porque facilita o entendimento e a configuração das regras. |
Fornece interface de baixo nível para gerenciar configurações do proxy Envoy diretamente. O EnvoyFilter permite escrever scripts Lua personalizados ou usar outras extensões do Envoy para implementar lógica complexa. Esse método oferece mais poder e flexibilidade, mas exige conhecimento aprofundado das configurações do Envoy. |
|
Usabilidade |
Utiliza CRDs padrão do Istio, o que simplifica a configuração e o entendimento. |
A configuração é mais complexa e requer familiaridade com a API de configuração do Envoy. Sem conhecimento sólido dos mecanismos internos do Envoy, a probabilidade de erros aumenta. |
|
Escopo de aplicação |
Abrange a maioria das operações comuns de cabeçalhos: adicionar, modificar ou excluir cabeçalhos de requisição e resposta. Defina valores de cabeçalho como strings fixas ou gere valores dinamicamente com expressões integradas. Essas expressões usam o delimitador |
Suporta personalizações avançadas e operações complexas além dos recursos do VirtualService, como verificações condicionais, transformações complexas de dados ou chamadas a serviços externos. Calcule os valores dos cabeçalhos dinamicamente por meio de código. |
|
Cenários de uso |
Adicione, remova ou modifique cabeçalhos quando as operações estiverem vinculadas a regras de roteamento específicas. |
Realize manipulação profunda de requisições ou respostas, ou modifique cabeçalhos globalmente sem alterar as regras de roteamento do Istio. |