Description
What steps did you take and what happened:
I wrote an AuthorizationServer
using Rust. In Rust, the main package to handle http2 connections is called h2
, which happens to be a very strict implementation of the http2 protocol.
I then registered my server as an ExtensionService
When Envoy makes a request, the authority header is set to:
"extension/{{ namespace }}/{{ ExtensionService name }}"
That is an invalid authority header according to the specs. As a result, h2
refuses to handle the request as reported here a while ago
What did you expect to happen:
A valid authority header is sent to the server. Maybe only the ExtensionService name, or the virtual host fqdn?
Anything else you would like to add:
I've tried with h2 and h2c protocols without any diffrence.
I also tried not providing a protocol to see if maybe a http1 request could be handled (Rust has utilities already to convert http1/grpc-web on the fly and it could work) but, in this case, no protocol is set and the server doesn't know what to do with the TCP request
Environment:
- Contour version: 1.19.1
- Kubernetes version: (use
kubectl version
): 1.23 - Kubernetes installer & version: k0s
- Cloud provider or hardware configuration: bare metal
- OS (e.g. from
/etc/os-release
): Ubuntu