アップグレードの問題

Envoyフィルタの移行

Envoyフィルタは、Istio xDS設定生成の実装の詳細に緊密に結合されたアルファAPIです。EnvoyフィルタアルファAPIの本番環境での使用は、Istioのコントロールプレーンまたはデータプレーンのアップグレード中に慎重に管理する必要があります。多くの場合、Envoyフィルタは、アップグレードのリスクが大幅に低い、ファーストクラスのIstio APIに置き換えることができます。

メトリクスのカスタマイズにTelemetry APIを使用する

Prometheus メトリクスの生成をカスタマイズするための IstioOperator の使用は、Telemetry API に置き換えられました。これは、IstioOperator がメトリクスフィルタ設定を変更するためにテンプレート EnvoyFilter に依存しているためです。2 つの方法は互換性がないことに注意してください。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)"

Wasmデータプレーンの拡張性にWasmPlugin APIを使用する

Wasm フィルターを挿入するための EnvoyFilter の使用は、WasmPlugin API に置き換えられました。WasmPlugin API を使用すると、アーティファクトレジストリ、URL、またはローカルファイルからプラグインを動的にロードできます。「Null」プラグインランタイムは、Wasm コードのデプロイメントに推奨されるオプションではなくなりました。

ゲートウェイトポロジを使用して、信頼できるホップ数を設定する

HTTP 接続マネージャーで信頼できるホップの数を設定するための EnvoyFilter の使用は、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プロトコルを有効にする

イングレスゲートウェイで PROXY プロトコル を有効にするための EnvoyFilter の使用は、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 と実験的なブートストラップディスカバリーサービスの使用は、プロキシアノテーション 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]}'
この情報は役に立ちましたか?
改善のための提案はありますか?

フィードバックありがとうございます!