When configuring the Http2Protocol options, for h2 or h2c clusters (https://github.com/projectcontour/contour/blob/main/internal/envoy/v3/cluster.go#L132), the field is marked as deprecated.
Looks like we need to switch to: envoy_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options
From the docs it doesn't look like typed_extension_protocol_options is deprecated but rather upstream_http_protocol_options is deprecated: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#envoy-v3-api-field-config-cluster-v3-cluster-upstream-http-protocol-options
It does look like we could use explicit_http_config in the helper to explicitly use HTTP/2: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/upstreams/http/v3/http_protocol_options.proto#envoy-v3-api-field-extensions-upstreams-http-v3-httpprotocoloptions-explicit-http-config (specifically set UpstreamProtocolOptions field to an *HttpProtocolOptions_ExplicitHttpConfig_)
I thought I fixed this with https://github.com/projectcontour/contour/pull/3321 -- is something wrong with that change?
I thought I fixed this with #3321 -- is something wrong with that change?
Oh yeah, you totally already used the Explicit field (the proto/oneof translated to Go confused me for a bit haha), I think your change is already up to date with the latest APIs, not sure what @stevesloka is referencing
In the envoy package under clusters, we're using that field still which is marked as deprecated:

I don't think that is the case on main: https://github.com/projectcontour/contour/blob/6180966889766671c2049789551cd21e4629fcc6/internal/envoy/v3/cluster.go#L132
Yeah looks like your code is not up to date. This was the one that got merged, reverted, then re-merged :/

Most helpful comment