Skip to content

A Go framework to write an HTTP Filter extension on Envoy Proxy

License

Notifications You must be signed in to change notification settings

ardikabs/gonvoy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gonvoy

Go Reference Go Report Card Test Codecov

A 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

Setup

  • Install Git.

  • Install Go 1.22.

  • Clone the project.

    $ git clone -b plugin git@github.com: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.

License

MIT