# README
Gonvoy
A thin Go framework to write an HTTP Filter extension on Envoy Proxy. It leverages the Envoy HTTP Golang Filter as its foundation.
Features
-
Full Go experience for building Envoy HTTP Filter extension.
-
Porting
net/http
interface experience to extend Envoy Proxy behavior with HTTP Golang Filter. -
Logging with go-logr.
-
Stats support; Enabling users to generate their own custom metrics.
-
Panic-free support; If a panic does occur, it is ensured that it won't break the user experience, particularly the Envoy proxy processes, as it will be handled in a graceful manner by returning a configurable response, defaults to
500
.
Compatibility Matrix
Gonvoy | Envoy Proxy |
---|---|
v0.1 | v1.27 |
v0.2 | v1.29 |
v0.3 | v1.29 |
latest | v1.30 |
Installation
go get github.com/ardikabs/gonvoy
Development Guide
Prerequisites
- Go 1.22 or later. Follow Golang installation guideline.
Setup
-
Install Git.
-
Install Go 1.22.
-
Clone the project.
git clone -b plugin [email protected]:ardkabs/gonvoy.git
-
Create a meaningful branch
git checkout -b <your-meaningful-branch>
-
Test your changes.
make test
-
We highly recommend instead of only run test, please also do audit which include formatting, linting, vetting, and testing.
make audit
-
Add, commit, and push changes to repository
git add . git commit -s -m "<conventional commit style>" git push origin <your-meaningful-branch>
For writing commit message, please use conventionalcommits as a reference.
-
Create a Pull Request (PR). In your PR's description, please explain the goal of the PR and its changes.
Testing
Unit Test
make test
Try It
To try this framework in action, heads to example directory.