istio.io/content/zh/docs/ops/common-problems/upgrade-issues/index.md

5.5 KiB
Raw Blame History

title description weight owner test
升级问题 解决 Istio 升级遇到的常见问题。 60 istio/wg-policies-and-telemetry-maintainers n/a

EnvoyFilter 迁移

EnvoyFilter 是一个与 Istio xDS 配置生成的实现细节紧密耦合的 Alpha API。 在升级 Istio 的控制面或数据面时,必须谨慎使用 EnvoyFilter Alpha API。 在许多情况下,您可以使用升级风险低的标准 Istio API 替换 EnvoyFilter

使用 Telemetry API 自定义指标 {#use-telemetry-api-for-metrics- customization}

因为 IstioOperator 依赖于模板 EnvoyFilter 来更改指标过滤器配置, 所以使用 IstioOperator 自定义 Prometheus 指标生成的方式已经替换为 Telemetry API。 请注意这两种方式互不兼容Telemetry API 无法与 EnvoyFilterIstioOperator 指标自定义配置一起使用。

例如,以下 IstioOperator 配置添加了一个 destination_port 标记:

{{< text yaml >}} apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: values: telemetry: v2: prometheus: configOverride: inboundSidecar: metrics: - name: requests_total dimensions: destination_port: string(destination.port) {{< /text >}}

以下 Telemetry 配置替换上述配置:

{{< text yaml >}} 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)" {{< /text >}}

使用 WasmPlugin API 扩展 Wasm 数据面

使用 EnvoyFilter 注入 Wasm 过滤器的做法已替换为 WasmPlugin API。 这是因为 WasmPlugin API 允许从镜像仓库、URL 或本地文件动态加载插件。 对于部署 Wasm 代码而言“Null” 插件运行时不再是推荐的选项。

使用网关拓扑设置可信跳数

使用 EnvoyFilter 在 HTTP 连接管理器中配置可信跳数的方式已替换为 ProxyConfig 中的 gatewayTopology 字段。例如,以下 EnvoyFilter 配置应默认在 Pod 或网关上使用注解来替换:

{{< text yaml >}} 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 {{< /text >}}

使用等效的入口网关 Pod 代理配置注解:

{{< text yaml >}} metadata: annotations: "proxy.istio.io/config": '{"gatewayTopology" : { "numTrustedProxies": 1 }}' {{< /text >}}

使用网关拓扑在入口网关上启用 PROXY 协议

使用 EnvoyFilter 在入口网关上启用 PROXY 协议 已替换为 ProxyConfig 中的 gatewayTopology 字段。例如,以下 EnvoyFilter 配置应默认在 Pod 或网格上使用注解来替换:

{{< text yaml >}} 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 {{< /text >}}

使用等效的入口网关 Pod 代理配置注解:

{{< text yaml >}} metadata: annotations: "proxy.istio.io/config": '{"gatewayTopology" : { "proxyProtocol": {} }}' {{< /text >}}

使用代理注解自定义直方图桶大小

使用 EnvoyFilter 和实验性引导发现服务来配置直方图指标桶大小的方式已替换为代理注解 sidecar.istio.io/statsHistogramBuckets。例如,以下 EnvoyFilter 配置应在 Pod 上使用注解来替换:

{{< text yaml >}} 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] {{< /text >}}

使用等效的 Pod 注解:

{{< text yaml >}} metadata: annotations: "sidecar.istio.io/statsHistogramBuckets": '{"istiocustom":[1,5,50,500,5000,10000]}' {{< /text >}}