Aggiorna le configurazioni del compressore EnvoyFilter
Diversi campi di primo livello nell'interfaccia API del filtro
envoy.extensions.filters.http.compressor.v3.Compressor sono obsoleti
in
Envoy
(vedi la definizione
dell'origine).
Queste impostazioni sono state spostate in blocchi dedicati
response_direction_config.common_config e
request_direction_config.common_config.
Questa guida fornisce il contesto e i passaggi necessari per aggiornare le tue risorse EnvoyFilter a un formato supportato. Il passaggio a questo formato moderno
garantisce che le tue configurazioni rimangano compatibili con gli aggiornamenti successivi, usufruiscano
di una migliore chiarezza strutturale e siano in linea con le best practice
di modernizzazione di Cloud Service Mesh.
Comprendere la necessità di modernizzazione
Il filtro Envoy Compressor fornisce la compressione e la decompressione al volo dei corpi HTTP, contribuendo a ridurre l'utilizzo della larghezza di banda e a migliorare le prestazioni dell'applicazione.
Cloud Service Mesh con il control plane TRAFFIC_DIRECTOR (vedi Controllare l'implementazione del control plane) richiede l'utilizzo della versione supportata dell'API EnvoyFilter. Le implementazioni legacy
che utilizzano campi di primo livello deprecati (come content_length, content_type,
disable_on_etag_header, remove_accept_encoding_header o runtime_enabled)
continueranno a funzionare, ma è consigliabile aggiornarle immediatamente per
motivi di affidabilità.
Quando utilizzi questi campi ritirati, le convalide vengono implementate
progressivamente nei canali di rilascio (Rapid, poi Regular e poi Stable).
Le convalide del control plane vengono applicate in base alla data di deployment:
| Tipo di deployment | Comportamento di convalida |
|---|---|
| Deployment legacy (eseguiti prima dell'attivazione delle convalide) | Il control plane imposta lo stato warning sulla risorsa personalizzata (CR) EnvoyFilter che indica: found usage of unsupported fields: [...]. La configurazione verrà comunque applicata per la compatibilità con le versioni precedenti, ma devi eseguire la migrazione ai campi supportati per garantire il supporto continuo. |
| Deployment supportati (eseguiti dopo l'attivazione delle convalide) | Il control plane blocca rigorosamente l'utilizzo di campi non supportati. L'applicazione della configurazione genera un errore nella risorsa EnvoyFilter con il messaggio: found usage of unsupported fields: [...] e la configurazione non supportata verrà rifiutata. |
L'aggiornamento delle configurazioni risolve questi avvisi ed errori nello stato delle risorse e garantisce che le configurazioni siano conformi alle convalide.
Identificare le configurazioni ritirate
La configurazione di EnvoyFilter deve essere aggiornata se imposti uno dei seguenti campi direttamente sotto il blocco typed_config:
min_content_lengthcontent_lengthcontent_typedisable_on_etag_headerremove_accept_encoding_header
Puoi elencare i tuoi EnvoyFilter utilizzando:
kubectl get envoyfilters --all-namespaces -o yaml
Controlla l'output per la patch EnvoyFilters envoy.filters.http.compressor.
Formati di configurazione
Le sezioni seguenti forniscono esempi di configurazioni sia deprecate che modernizzate
per il filtro Compressor Envoy all'interno di una risorsa EnvoyFilter.
Esempio di configurazione ritirata
Se la sezione delle patch del tuo EnvoyFilter è simile al seguente snippet, utilizza
il formato ritirato:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: compressor-filter-update
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.compressor
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
# These top-level fields are DEPRECATED
min_content_length: 1024
content_type:
- "application/javascript"
- "application/json"
disable_on_etag_header: true
remove_accept_encoding_header: true
compressor_library:
name: gzip
typed_config:
'@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
Esempio di configurazione modernizzata
I campi ritirati devono essere spostati nell'oggetto response_direction_config
(o request_direction_config, se applicabile):
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: compressor-filter-update
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.compressor
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
compressor_library:
name: gzip
typed_config:
'@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
response_direction_config:
disable_on_etag_header: true # MOVED
remove_accept_encoding_header: true # MOVED
common_config:
min_content_length: 1024 # MOVED
content_type: # MOVED
- "application/javascript"
- "application/json"
enabled:
default_value: true
runtime_key: "compressor.enabled"
Campi e percorsi di migrazione supportati
Per un elenco completo dei campi supportati, consulta la guida Estensibilità del piano dati tramite EnvoyFilter. La tabella seguente descrive nel dettaglio il mapping per la migrazione dei campi ritirati più comuni.
| Percorso campo deprecato | Percorso campo moderno | Note |
|---|---|---|
typed_config.min_content_length |
typed_config.response_direction_config.common_config.min_content_lengthOR typed_config.request_direction_config.common_config.min_content_length |
Imposta le dimensioni minime della risposta O della richiesta rispettivamente per attivare la compressione. |
typed_config.content_length |
typed_config.response_direction_config.common_config.min_content_lengthOR typed_config.request_direction_config.common_config.min_content_length |
Alias precedente per min_content_length. Rinomina in min_content_length nel nuovo percorso. |
typed_config.content_type |
typed_config.response_direction_config.common_config.content_typeOR typed_config.request_direction_config.common_config.content_type |
Array di tipi di contenuti da comprimere. |
typed_config.disable_on_etag_header |
typed_config.response_direction_config.disable_on_etag_header |
Disabilita la compressione se la risposta contiene un'intestazione ETag. |
typed_config.remove_accept_encoding_header |
typed_config.response_direction_config.remove_accept_encoding_header |
Rimuove l'intestazione Accept-Encoding dalle richieste prima di inviarle all'upstream. |
Piano di migrazione
Ti consigliamo di aggiornare le configurazioni di EnvoyFilter seguendo le best practice standard di deployment e test della tua organizzazione. Considera questi
passaggi generali durante la migrazione:
- Identifica:trova tutte le risorse
EnvoyFilterutilizzando il filtro Compressor con i campi ritirati come descritto in Identificare le configurazioni ritirate. - Testare: modifica il file YAML delle tue risorse
EnvoyFiltere testa le modifiche in un ambiente di pre-produzione. Verifica che la compressione sia attiva per i tipi e le dimensioni dei contenuti previsti. - Monitoraggio e convalida:
- Controlla lo stato della risorsa
EnvoyFilterper verificare che gli avvisi o gli errorifound usage of unsupported fields: [...]non siano più presenti. - Monitora le metriche chiave: utilizzo della CPU, latenza e consumo di larghezza di banda.
- Ispeziona le intestazioni di risposta (ad esempio
Content-Encoding: gzip) e conferma la compressione.
- Controlla lo stato della risorsa
- Deployment:applica le configurazioni
EnvoyFiltersupportate ai carichi di lavoro di produzione.
Vantaggi della modernizzazione
- Chiarezza dello stato delle risorse: rimuove
found usage of unsupported fields: [...]avvisi ed errori dallo stato della risorsaEnvoyFilterdel compressore. - Standardizzazione: si allinea alle best practice di configurazione di Envoy e alle convalide
TRAFFIC_DIRECTOR. - Compatibilità futura: garantisce che le configurazioni funzionino perfettamente con le versioni future di Envoy e Cloud Service Mesh.
Risoluzione dei problemi e assistenza
Se riscontri problemi, tieni presente quanto segue:
- Controlla la sintassi YAML e il posizionamento dei campi.
- Esamina i log del proxy Envoy per visualizzare messaggi di errore dettagliati:
kubectl logs -l app=your-app -c istio-proxy -n your-namespace. - Se necessario, esegui il rollback alla configurazione
EnvoyFilterprecedente. - Contatta l' Google Cloud assistenza per ulteriore supporto.