Проблеми з оновленням
Міграція EnvoyFilter
EnvoyFilter
— це альфа API, яка тісно повʼязана з деталями реалізації генерації конфігурації xDS в Istio. Використання альфа API EnvoyFilter
в промислових системах має бути ретельно продуманим під час оновлення панелі управління або панелі даних Istio. У багатьох випадках EnvoyFilter
можна замінити на API Istio, що несе значно менші ризики оновлення.
Використання Telemetry API для налаштування метрик
Використання IstioOperator
для налаштування генерації метрик Prometheus було замінено на Telemetry API, оскільки IstioOperator
спирається на шаблон EnvoyFilter
для зміни конфігурації фільтра метрик. Зверніть увагу, що ці два методи несумісні, і Telemetry API не працює з EnvoyFilter
або конфігурацією налаштування метрик IstioOperator
.
Наприклад, наступна конфігурація IstioOperator
додає теґ destination_port
:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
values:
telemetry:
v2:
prometheus:
configOverride:
inboundSidecar:
metrics:
- name: requests_total
dimensions:
destination_port: string(destination.port)
Наступна конфігурація Telemetry
замінює наведену вище:
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: namespace-metrics
spec:
metrics:
- providers:
- name: prometheus
overrides:
- match:
metric: REQUEST_COUNT
mode: SERVER
tagOverrides:
destination_port:
value: "string(destination.port)"
Використання WasmPlugin API для розширення можливостей Wasm панелі даних
Використання EnvoyFilter
для додавання фільтрів Wasm було замінено на WasmPlugin API. WasmPlugin API дозволяє динамічне завантаження втулків з реєстрів артефактів, URL-адрес або локальних файлів. Виконавчий файл втулка “Null” більше не є рекомендованим варіантом для розгортання коду Wasm.
Використання топології шлюза для встановлення кількості довірених хопів
Використання EnvoyFilter
для конфігурації кількості довірених хопів в HTTP-менеджері зʼєднань було замінено на поле gatewayTopology
в ProxyConfig
. Наприклад, наступна конфігурація EnvoyFilter
повинна використовувати анотацію на podʼі або стандартне значення для мережі. Замість:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: ingressgateway-redirect-config
spec:
configPatches:
- applyTo: NETWORK_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
patch:
operation: MERGE
value:
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
xff_num_trusted_hops: 1
workloadSelector:
labels:
istio: ingress-gateway
Використовуйте еквівалентну анотацію конфігурації проксі podʼа для шлюза:
metadata:
annotations:
"proxy.istio.io/config": '{"gatewayTopology" : { "numTrustedProxies": 1 }}'
Використання топології шлюза для увімкнення PROXY протоколу на шлюзах вхідного трафіку
Використання EnvoyFilter
для увімкнення PROXY протоколу на шлюзах вхідного трафіку було замінено на поле gatewayTopology
в ProxyConfig
. Наприклад, наступна конфігурація EnvoyFilter
повинна використовувати анотацію на podʼі або стандартне значення для мережі. Замість:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: proxy-protocol
spec:
configPatches:
- applyTo: LISTENER_FILTER
patch:
operation: INSERT_FIRST
value:
name: proxy_protocol
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol"
workloadSelector:
labels:
istio: ingress-gateway
Використовуйте еквівалентну анотацію конфігурації проксі podʼа для шлюза:
metadata:
annotations:
"proxy.istio.io/config": '{"gatewayTopology" : { "proxyProtocol": {} }}'
Використання анотації проксі для налаштування розмірів кошиків гістограми
Використання EnvoyFilter
та експериментального сервісу виявлення bootstrap для конфігурації розмірів кошиків для метрик гістограми було замінено на анотацію проксі sidecar.istio.io/statsHistogramBuckets
. Наприклад, наступна конфігурація EnvoyFilter
повинна використовувати анотацію на podʼі. Замість:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: envoy-stats-1
namespace: istio-system
spec:
workloadSelector:
labels:
istio: ingressgateway
configPatches:
- applyTo: BOOTSTRAP
patch:
operation: MERGE
value:
stats_config:
histogram_bucket_settings:
- match:
prefix: istiocustom
buckets: [1,5,50,500,5000,10000]
Використовуйте еквівалентну анотацію podʼа:
metadata:
annotations:
"sidecar.istio.io/statsHistogramBuckets": '{"istiocustom":[1,5,50,500,5000,10000]}'