This PR add Early Header Manipulation to the HTTP Connection Manager settings. It allows request headers to be manipulated before they are acted on by tracing and other logic. The goal of the work is to allow customers to override Zipkin/B3 tracing headers.
API changes
Added headers.options.gloo.solo.io.EarlyHeaderManipulation to HttpConnectionManagerSettings.
Code changes
Updated ENVOY_GLOO_IMAGE a version with the EHM extension enabled in Envoy
During tests, the wapper was using a 1.18 image tag. Passing VERSION as ENVOY_IMAGE_TAG in the test Make target to get it using the locally built wrapper
Added go-httpbin and and a new upstream generator to make testing headers easier
Added ProcessHcmNetworkFilter to the headers plugin, handled the new setting
Description
This PR add Early Header Manipulation to the HTTP Connection Manager settings. It allows request headers to be manipulated before they are acted on by tracing and other logic. The goal of the work is to allow customers to override Zipkin/B3 tracing headers.
API changes
headers.options.gloo.solo.io.EarlyHeaderManipulation
toHttpConnectionManagerSettings
.Code changes
ENVOY_GLOO_IMAGE
a version with the EHM extension enabled in EnvoyVERSION
asENVOY_IMAGE_TAG
in the test Make target to get it using the locally built wrapperProcessHcmNetworkFilter
to the headers plugin, handled the new settingDocs changes
Context
Testing steps
I've test locally with Kind by setting and exercising the new logic with curl, including configuring a real Zipkin tracer.
Apply this manifest:
kubectl -n gloo-system port-forward services/gateway-proxy 8080:80
curl
. a.curl -H "x-override-traceid: asdfasdf" -H "x-override-spanid: zxcvzxcv" http://localhost:8080/get
b.curl http://localhost:8080/get
Checklist:
BOT NOTES: resolves https://github.com/solo-io/gloo/issues/9604