istio / istio.io

Source for the istio.io site
https://istio.io/
Apache License 2.0
761 stars 1.54k forks source link

envoyfilter docs don't show example of setting tcp_proxy filter default values and port specific values #14109

Open jrwren opened 1 year ago

jrwren commented 1 year ago

https://istio.io/latest/docs/reference/config/networking/envoy-filter/

It would be nice if there were an example for a TCP only environment which shows how to set a large or non-existing idle_timeout for certain TCP ports and also which has a default idle_timeout for all other TCP ports.

GregHanson commented 1 year ago

You are welcome to submit example EnvoyFilters to the api repo (https://github.com/istio/api/blob/master/networking/v1alpha3/envoy_filter.proto) or to the examples listed on our wiki (https://github.com/istio/istio/wiki/EnvoyFilter-Samples).

Timeout is a tricky one for us to test, since it can be affected by the client implementation, the client sidecar proxy (outbound listener), the server sidecar proxy (inbound listener), and the server implementation.

If I misread, and you are asking for an example for how to set idle_timeout field for TCP listeners, you can set the ISTIO_META_IDLE_TIMEOUT environment variable on your app (https://github.com/istio/istio/blob/master/pilot/pkg/model/context.go#L655). And if you still want to use an EnvoyFilter, you can use istioctl pc listener <pod_name> -n <pod_ns> --port XXX -o json to get the listener struct for you to match against and modify via EnvoyFilter

jrwren commented 1 year ago

I'd love to submit an example to either or both of those places, but I'm not sure if what I'm looking for is even possible. I'm new enough to istio and envoy to be rather clueless. Even istioctl pc listener is new to me. I think my problem is that I don't have a listener and I'm applying config to only the default. Sounds like I need to create a listener.