In my previous post on Envoy Gateway I only discussed the basic configuration. As I started using more of my services via Gateway API, I noticed a couple of issues crop up. Many of the Nginx Ingress controllers made use of an annotation to increase the payload size beyond the default.

Something like:

annotations:
  nginx.ingress.kubernetes.io/proxy-body-size: "100m"

The Gateway API, for better or worse, took a slightly more complicated and deliberate approach for features like this. Rather than the wild-west of annotations, they build a spec for this with policy objects. So, if an ingress used the above annotation, then the http route will need a corresponding policy object. It is fairly well layed out in their documentation.

Something like:

---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: BackendTrafficPolicy
metadata:
  name: my-app-route-request-buffer-policy
spec:
  targetRefs:
    - group: gateway.networking.k8s.io
      kind: HTTPRoute
      name: my-app-route
  requestBuffer:
    limit: 100Mi

Each route that needs this functionality will require its own policy object to configure it.