We’re excited to announce Ambassador 0.31 today. This release is entirely due to the amazing Alex Gervais, who contributed support for rate limiting in this release. The official list of changes:

Ambassador now supports using Envoy’s gRPC-based rate limiting mechanism via the RateLimitService. (Alex Gervais).

(Alex Gervais). The statsd sidecar is less verbose in logging. (Alex Gervais).

sidecar is less verbose in logging. (Alex Gervais). The documentation has been reorganized to add a “services” section that covers both the RateLimitService and AuthService .

Rate Limiting

Rate limiting is an important technique to improve the reliability of your APIs. Imagine any of these scenarios:

One of your users inadvertently starts hammering your APIs; you want to make sure that your APIs are available to the rest of your users. You want a per-client rate limiter.

You have a sudden spike in usage from a broad set of users (e.g., you’re on the homepage of Hacker News). While you may want to add capacity as quickly as possible, you also want to insure that your services don’t sudden fail from overwhelming load (“cascade failure”). You need some form of load shedding.

Rate Limiting in Ambassador

The exact algorithm(s) for rate limiting and load shedding are highly dependent on your organizational policies and workloads. Thus, Ambassador adds rate limiting support via a pluggable, external third party service. Ambassador sends metadata about each request to the third party rate limiting service over gRPC. The third party service evaluates the metadata (e.g., the source IP, the destination API, etc.) and returns an OK or OVER_LIMIT response.

For more on rate limiting, read the rate limiting tutorial and documentation.

Testing Ambassador 0.31

You can get Ambassador 0.31 running with a single Docker command:

docker run -it -p 8080:80 --name=ambassador --rm quay.io/datawire/ambassador:0.31.0 --demo

Or follow the Getting Started guide to get it running on Kubernetes.

Upgrading Ambassador 0.31

Ambassador relies on Kubernetes deployments for updates. To update Ambassador, change your Kubernetes manifest to point to quay.io/datawire/ambassador:0.31.0 and run kubectl apply on the updated manifest. Kubernetes will apply a rolling update and update to 0.31.

Conclusion

If you run into any problems with the update, please open an issue or join our Gitter chat for some help. Special thanks again to Alex Gervais for his work on the release!

And, if Ambassador is working well for you, we’d love to hear about it. Drop us a line in the comments below, or @datawireio on Twitter.