【发布时间】:2021-07-21 12:35:07
【问题描述】:
我正在尝试通过 Envoy 过滤器设置 TCP idleTimeout,以便外部域 some.app.com 的出站连接在空闲 5 秒后将被终止:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: listener-timeout-tcp
namespace: istio-system
spec:
configPatches:
- applyTo: NETWORK_FILTER
match:
context: SIDECAR_OUTBOUND
listener:
filterChain:
sni: some.app.com
filter:
name: envoy.filters.network.tcp_proxy
patch:
operation: MERGE
value:
name: envoy.filters.network.tcp_proxy
typed_config:
'@type': type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy
idle_timeout: 5s
但是,当我尝试应用此过滤器时,我收到以下错误:
Error from server: error when creating "filter.yaml": admission webhook "pilot.validation.istio.io" denied the request: configuration is invalid: envoy filter: missing filters
所以,我意识到istio 1.2.5 不支持上面的EnvoyFilter 配置,所以我修改了配置以使用旧版本:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: tcp-idle-timeout
spec:
workloadSelector:
labels:
app: mecha-dev
filters:
- listenerMatch:
listenerType: SIDECAR_OUTBOUND
listenerProtocol: TCP
filterName: envoy.tcp_proxy
filterType: NETWORK
filterConfig:
idle_timeout: 5s
修改后 EnvoyFilter 已创建,但它似乎对出站请求没有任何影响。此外,我找不到将这个过滤器限制为仅发送到外部服务 some.app.com 的出站请求的方法。
我的 EnvoyFilter 配置中是否缺少某些内容?另外,我们能否将此过滤器限制为仅some.app.com? listenerMatch下面有address选项,但是如果外部服务的IP地址不断变化呢?
使用的 Istio 和 EnvoyProxy 版本:
ISTIO_VERSION=1.2.5
ENVOY_VERSION=1.11.0-dev
【问题讨论】:
-
你好@bakadevops。您能否告诉我们您使用的是哪个版本的 Istio?
-
@WytrzymałyWiktor Istio 版本是
1.2.5,它使用的特使版本是1.11.0-dev。 -
您应该升级到最新版本,对 1.2 的支持于 2019 年 12 月结束
-
@ChristophRaab 我意识到这个 EnvoyFilter 配置不起作用,因为它不支持 y 版本
1.2.5。是的,升级 istio 会有所帮助,但它是一个旧的生产集群,所以我现在不能这样做。是否有任何其他解决方法可以使其正常工作? -
您可以使用旧文档并修改您的过滤器以使用旧 api:istio.io/v1.2/docs/reference/config/networking/v1alpha3/…
标签: kubernetes istio envoyproxy istio-sidecar