Error when creating EnvoyFilter resource: Request entity too large: limit is 3145728

We run istio on GKE. We use EnvoyFilter CRD to add the grpc transcoder filter into the gateway. However, our grpc proto descriptor is around 1.7MB and thus is rejected by k8s according to which the etcd limit is 1MB. Changing --max-request-bytes seems not supported by GKE. So we searched some other options

  • Build a custom image with the proto descriptor. This doesn’t really work for us because our use case is kinda special that we are a service platform to offer common service to many service producers. Making each SP create a custom image isn’t scalable
  • Mount a persistent volume?

Any other suggestions? Thank you so much!

Context: we found the build image solution from here: examples on gRPC-JSON transcode needed · Issue #7652 · istio/istio · GitHub.

1 Like

FYI, the 1MB limit comes directly from kubernetes:

A ConfigMap is not designed to hold large chunks of data. The data stored in a ConfigMap cannot exceed 1 MiB. If you need to store settings that are larger than this limit, you may want to consider mounting a volume or use a separate database or file service.

And the hardcoded validation is not configurable: Config size limit by pmorie · Pull Request #19909 · kubernetes/kubernetes · GitHub