O Service Mesh (ASM) oferece dois CustomResourceDefinitions (CRDs) — EnvoyFilterTemplate e EnvoyFilterTemplateBinding — para criar configurações de filtros Envoy reutilizáveis e compatíveis com versões específicas. Defina um modelo de filtro uma única vez e associe-o a workloads, namespaces e versões do Istio sem duplicar YAML.
Por que usar esses CRDs em vez de recursos EnvoyFilter nativos?
Segurança entre versões. Recursos EnvoyFilter mantidos manualmente podem tornar-se incompatíveis após a atualização de uma instância do ASM, pois a versão do proxy Envoy muda. O EnvoyFilterTemplate permite definir configurações de filtro específicas por versão, garantindo a aplicação automática do filtro correto após uma atualização.
Reutilização. Um único modelo gera múltiplos recursos EnvoyFilter em diferentes workloads e namespaces por meio de bindings separados.
Menos duplicação. Metadados e seletores de workload são preenchidos automaticamente a partir do binding, eliminando a necessidade de replicá-los no modelo.
Os intervalos de istioVersion definidos em um único EnvoyFilterTemplate não devem se sobrepor.
Como funciona
Crie um EnvoyFilterTemplate contendo uma ou mais configurações de filtro, cada uma direcionada a um intervalo específico de versões do Istio.
Crie um EnvoyFilterTemplateBinding que referencie o modelo e especifique os workloads e as versões do proxy Envoy aos quais o filtro se aplica.
O ASM gera automaticamente os recursos EnvoyFilter correspondentes, com metadados, rótulos e seletores de workload corretos.
Exemplo de configuração
O exemplo abaixo define um EnvoyFilterTemplate que configura os tamanhos de janela de conexão e stream HTTP/2 na porta 80 para instâncias do ASM executando Istio 1.19 ou superior. Em seguida, um EnvoyFilterTemplateBinding correspondente gera um filtro Envoy direcionado a proxies na versão 1.20, aplicado globalmente no namespace istio-system.
EnvoyFilterTemplate
EnvoyFilterTemplateBinding
apiVersion: istio.alibabacloud.com/v1
kind: EnvoyFilterTemplateBinding
metadata:
name: seth2windows-binding-1.20
namespace: istio-system
spec:
templateRef:
istioVersion: "1.20"
name: seth2windows
workloads:
- kind: Namespace
namespace: istio-system
Campos do EnvoyFilterTemplate
O EnvoyFilterTemplate define configurações de filtros Envoy para diferentes versões do Istio. Após a atualização de uma instância do ASM, a configuração de filtro correspondente é aplicada automaticamente aos proxies Envoy atualizados, reduzindo riscos de compatibilidade em comparação com recursos EnvoyFilter mantidos manualmente.
EnvoyFilterTemplateSpec
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Sim |
Lista de entradas de modelos de filtros Envoy. Cada entrada visa uma versão específica ou um intervalo de versões do Istio. Os intervalos de versão entre as entradas não devem se sobrepor. |
TemplateValue
Cada TemplateValue associa uma configuração de filtro Envoy (em YAML) ao intervalo de versões do Istio ao qual ela se aplica.
Campo | Tipo | Obrigatório | Descrição |
| string | Sim | Versão do Istio ou intervalo de versões alvo deste filtro. Especifique uma versão menor do Istio, como |
| string | Sim | Configuração do filtro Envoy no formato YAML. Deve estar em conformidade com a especificação do CRD EnvoyFilter. Omita os campos |
Sintaxe de intervalo de versões
|
Exemplo |
Significado |
|
|
Corresponde apenas a instâncias do ASM executando Istio 1.19. |
|
|
Abrange as versões 1.18, 1.19 e 1.20 do Istio. |
|
|
Inclui o Istio 1.19 e todas as versões posteriores. |
|
|
Cobre o Istio 1.19 e todas as versões anteriores. |
Campos do EnvoyFilterTemplateBinding
Um EnvoyFilterTemplateBinding associa-se a um EnvoyFilterTemplate e especifica os workloads e as versões do proxy Envoy para os quais o ASM gera recursos EnvoyFilter.
EnvoyFilterTemplateBindingSpec
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
Sim |
Referencia o EnvoyFilterTemplate e especifica a versão do proxy Envoy alvo. O ASM utiliza essa informação para selecionar a entrada correta do modelo e definir a correspondência |
|
|
|
Não |
Workloads para os quais os filtros Envoy serão gerados. |
EnvoyFilterTemplateRef
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Nome do EnvoyFilterTemplate a ser referenciado. |
|
|
string |
Sim |
Versão do proxy Envoy alvo. Segue a mesma Sintaxe de intervalo de versões de |
WorkloadRef
Define os workloads aos quais o filtro Envoy gerado se aplica.
|
Campo |
Tipo |
Obrigatório |
Comportamento padrão |
Descrição |
|
|
string |
Sim |
-- |
Namespace onde o filtro Envoy é criado. Para aplicar o filtro globalmente na instância do ASM, defina este campo como |
|
|
string |
Não |
O filtro se aplica a todo o namespace. |
Nome do workload. Esse valor passa a fazer parte do nome do EnvoyFilter gerado. Ao visar um workload específico, utilize o nome do Service ou Deployment. |
|
|
string |
Não |
-- |
Tipo de workload (por exemplo, |
|
|
map<string, string> |
Não |
O filtro abrange todos os pods no namespace. |
Conjunto de rótulos para selecionar pods específicos. O ASM converte isso no campo |
Referências
Create an Envoy filter by using an Envoy filter template: Operações passo a passo para criar e gerenciar modelos de filtros Envoy.
Enable plug-ins to extend ASM capabilities: Selecione e personalize plug-ins no marketplace de plug-ins do ASM.