-
Notifications
You must be signed in to change notification settings - Fork 711
HTTPProxy service protocol missing http support #7371
Copy link
Copy link
Open
Labels
kind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.lifecycle/needs-triageIndicates that an issue needs to be triaged by a project contributor.Indicates that an issue needs to be triaged by a project contributor.lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.Denotes an issue or PR has remained open with no activity and has become stale.
Metadata
Metadata
Assignees
Labels
kind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.lifecycle/needs-triageIndicates that an issue needs to be triaged by a project contributor.Indicates that an issue needs to be triaged by a project contributor.lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.Denotes an issue or PR has remained open with no activity and has become stale.
There's no way to explicitly tell Contour to use HTTP/1.1 over plain text for upstream communication. The
protocolfield supportsh2,h2candtls, there's nohttporhttp/1.1value allowed. If you leave it blank, then Contour will use other, poorly documented and rather fragile means to detect the protocol (such as the name of the port specified in the Kubernetes service, a value that's not supposed to have semantic meaning).In my use case, I have a service that supports both HTTP/2 over plain text, and HTTP/1.1 over plain text on the same port. For the most part, I want to use HTTP/2 where possible, as gRPC is very commonly used as a protocol, and HTTP/2 is more efficient. However, on some routes, I want to support WebSockets. Contour doesn't support WebSockets over HTTP/2 (that's a separate issue, it requires passing a flag to Envoy), plus neither does my service mesh, so I need to explicitly use HTTP/1.1 for these routes. But Contour doesn't offer any robust means to specify to use HTTP/1.1.