Проблеми з оновленням

Міграція 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]}'
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!