O Service Mesh (ASM) permite criar filtros Envoy por meio das CustomResourceDefinitions (CRDs) EnvoyFilterTemplate e EnvoyFilterTemplateBinding. Você pode usar o mesmo modelo de filtro Envoy para gerar vários filtros e aplicá-los a diferentes workloads e namespaces. Essa abordagem torna as configurações reutilizáveis e aumenta a eficiência do gerenciamento.
Exemplo de configuração
O bloco de código a seguir define uma CRD EnvoyFilterTemplate. Essa CRD especifica o conteúdo de um modelo de filtro Envoy aplicável a instâncias do ASM com Istio versão 1,19 ou superior. O código também define uma CRD EnvoyFilterTemplateBinding. Use essa CRD para criar um filtro Envoy válido no namespace istio-system. Isso indica que o filtro Envoy atua globalmente na instância do ASM. O filtro se aplica a todos os proxies Envoy da versão 1,20. O conteúdo do filtro deriva do modelo definido na CRD EnvoyFilterTemplate, válido para instâncias do ASM com Istio versão 1,19 ou posterior.
O código YAML anterior cria o seguinte filtro Envoy:
Descrição dos campos do EnvoyFilterTemplate
O EnvoyFilterTemplate define uma série de filtros Envoy aplicáveis a diferentes versões do Istio. Filtros Envoy autogerenciados podem apresentar incompatibilidade com instâncias do ASM após atualizações ou manutenções. Utilize a CRD EnvoyFilterTemplate para personalizar filtros distintos conforme a versão do Istio. Após atualizar a versão de um proxy Envoy, aplique o filtro adequado ao novo proxy. Essa prática reduz riscos de compatibilidade.
EnvoyFilterTemplateSpec
A seção spec do exemplo anterior, chamada EnvoyFilterTemplateSpec, representa a configuração principal do EnvoyFilterTemplate.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
templates |
Sim |
Defina uma série de valores de modelo de filtro Envoy. Cada valor aplica-se a uma versão específica ou a um intervalo de versões do Istio. Os intervalos de versão do Istio de múltiplos valores de modelo não podem se sobrepor. |
TemplateValue
Cada TemplateValue especifica o conteúdo YAML de um filtro Envoy e a versão ou intervalo de versões do Istio aos quais o filtro se aplica.
Campo | Tipo | Obrigatório | Descrição |
istioVersion | string | Sim | Versão do Istio ou intervalo de versões ao qual o filtro Envoy se aplica. A versão deve ser uma versão secundária do Istio, como 1,19 ou 1,20. Una duas versões com um hífen para indicar que o filtro vale para o intervalo especificado. Para definir um intervalo de validade do filtro Envoy, utilize Exemplos:
|
value | string | Sim | Conteúdo YAML do filtro Envoy. Deve ser uma string e obedecer à descrição dos campos da CRD para filtros Envoy. Não configure os campos metadata e workloadSelector ao definir o filtro Envoy por meio do campo TemplateValue. Durante a criação do filtro, o sistema preenche automaticamente esses campos com base na CRD EnvoyFilterTemplateBinding. |
Descrição dos campos do EnvoyFilterTemplateBinding
Uma CRD EnvoyFilterTemplateBinding associa-se a uma CRD EnvoyFilterTemplate e determina os workloads e as versões dos proxies Envoy onde o filtro definido no EnvoyFilterTemplate entra em vigor.
EnvoyFilterTemplateBindingSpec
A seção spec, denominada EnvoyFilterTemplateBindingSpec, constitui a configuração central do EnvoyFilterTemplateBinding.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
templateRef |
Sim |
Referência do modelo. Indica a CRD EnvoyFilterTemplate referenciada pela CRD EnvoyFilterTemplateBinding e a versão da instância do ASM vinculada. |
|
|
workloads |
Não |
Liste os workloads que exigem a criação de filtros Envoy. |
EnvoyFilterTemplateRef
Campo | Tipo | Obrigatório | Descrição |
name | string | Sim | Nome do EnvoyFilterTemplate referenciado. |
istioVersion | string | Sim | Defina a versão do proxy Envoy onde o filtro terá efeito. Use uma versão secundária do Istio, como 1,19 ou 1,20. Separe duas versões por hífen para abranger um intervalo específico. Caso precise estipular um intervalo de versões, empregue Exemplos:
|
WorkloadRef
O WorkloadRef estabelece os workloads nos quais o filtro Envoy atua.
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
namespace |
string |
Sim |
Nome do namespace onde o filtro Envoy será criado. |
|
name |
string |
Não |
Nome do workload. Esse valor compõe o nome do filtro Envoy gerado. Recomenda-se usar o nome do Service ou Deployment. Caso o filtro atue globalmente no namespace, este parâmetro é opcional. |
|
kind |
string |
Não |
Tipo de workload vinculado ao filtro Envoy. Campo destinado apenas a exibição. |
|
selector |
map<string, string> |
Não |
Conjunto de rótulos para selecionar o pod onde o filtro Envoy entrará em vigor. O sistema converte esse campo automaticamente em workloadSelector no filtro. Se omitido, o filtro criado valerá para todo o namespace. |
Referências
Para saber mais sobre as operações e a relação entre modelos de filtro Envoy e os filtros em si, consulte Criar um filtro Envoy a partir de um modelo.
O ASM oferece recursos prontos para uso no marketplace de plug-ins para estender suas funcionalidades conforme necessário. Selecione e personalize diversos plug-ins de acordo com seus requisitos de negócio para atender a demandas variadas. Para mais informações, consulte Ativar plug-ins para estender as capacidades do ASM.