アップグレードの問題
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]}'