Important
This is taking advantage of Go 1.24+ and new go:wasmexport
directive, so using upstream Go.
Thanks to proxy-wasm community
Envoy WASM plugin to process X-Request-Id header (or the name you decide). It's able to create a value, overwrite it or populate one that is already present.
In some environments, x-request-id is not generated or populated, and it's always useful to have it to allow you tracing your customer's request better across your services. Some products like GCP Application Load Balancers are printing logs without those IDs, and not event generating them by default. It's possible to modify this behavior using Service Extensions that are Envoy plugins under the hood using Proxy-Wasm project. If you feel identified with this issue, this is the plugin you are looking for.
Deploying process for this plugin depends on the target (Istio or pure Envoy). You can find examples for both of them in documentation directory. In fact, these examples are used by us to test, so you can rely on them.
Additionally, this plugin can be deployed as GCP Service Extension using
our OCI image. If you want to tune the defaults, the config file for GCP is just a file called plugin.config
whose content is our json config.
This plugin is developed using Go.
It's only needed to craft your code and execute the following command:
make build run
Each release of this plugin is completely automated by using Github Actions' workflows. Inside those workflows, we use recipes present at Makefile as much as possible to be completely transparent in the process we follow for building this.
Assets belonging to each version can be found attached to the corresponding release. OCI images are not yet published until the whole process is well tested.
We are open to external collaborations for this project. For doing it you must:
- Open an issue explaining the problem
- Fork the repository
- Make your changes to the code
- Open a PR
We are developers and hate bad code. For that reason we ask you the highest quality on each line of code to improve this project on each iteration. The code will always be reviewed and tested
Copyright 2022.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This project was done using IDEs from JetBrains. They helped us to develop faster, so we recommend them a lot! 🤓