Kuadrant / limitador

Rate limiter
Apache License 2.0
58 stars 21 forks source link
envoy kubernetes rate-limiting rust

Limitador

Limitador GH Workflow docs.rs Crates.io ![Docker Repository on Quay](https://quay.io/repository/kuadrant/limitador/status "Docker Repository on Quay") codecov FOSSA Status

Limitador is a generic rate-limiter written in Rust. It can be used as a library, or as a service. The service exposes HTTP endpoints to apply and observe limits. Limitador can be used with Envoy because it also exposes a grpc service, on a different port, that implements the Envoy Rate Limit protocol (v3).

Limitador is under active development, and its API has not been stabilized yet.

Getting started

Rust library

Add this to your Cargo.toml:

[dependencies]
limitador = { version = "0.3.0" }

For more information, see the README of the crate

Server

Run with Docker (replace latest with the version you want):

docker run --rm --net=host -it quay.io/kuadrant/limitador:v1.0.0

Run locally:

cargo run --release --bin limitador-server -- --help

Refer to the help message on how to start up the server. More information are available in the server's README.md

Development

Build

cargo build

Run the tests

Some tests need a redis deployed in localhost:6379. You can run it in Docker with:

docker run --rm -p 6379:6379 -it redis

Then, run the tests:

cargo test --all-features

or you can run tests disabling the "redis storage" feature:

cd limitador; cargo test --no-default-features

Contributing

Join us on the #kuadrant channel in the Kubernetes Slack workspace, for live discussions about the roadmap and more.

License

Apache 2.0 License

FOSSA Status