Ambassador Labs

Code, ship, and run apps for Kubernetes faster and easier than ever — powered by Ambassador’s industry-leading developer experience.

Follow publication

A brief retrospective of Ambassador and Envoy releases

Richard Li
Ambassador Labs
Published in
4 min readMay 14, 2019

--

Ambassador has rapidly evolved as an API Gateway over the past two years of the project. In recognition of the two year anniversary of Ambassador, here’s a a summary of the evolution of Ambassador. (You’ll also note that our versioning scheme early on was fairly haphazard.)

March 31, 2017: 0.1.3

The first release of Ambassador was built on an early release of Envoy Proxy, and exposed its functionality through REST APIs. PostgreSQL was used for persisting configuration data.

April and May 2017

April 3, 2017. 0.1.9 release. Pin to Envoy commit 4ef8079e, somewhere after 1.2 but before 1.3.

April 13, 2017. 0.5.0 release. Support TLS termination.

May 2, 2017. 0.8.0 release. Launch Ambassador website and support TLS client authentication.

May 17, 2017. Envoy 1.3 release.

May 24, 2017. 0.8.11 release. Support Istio interoperation.

Summer 2017

Authentication was a major use case for Ambassador, and on June 23, 2017 we added support for basic authentication in 0.9.0.

June 30, 2017. 0.10 release. Support gRPC.

August 24, 2017. Envoy 1.4 released.

September 5, 2017. 0.10.13 release. We wanted to support multiple forms of authentication, and shipped our first version of what would become the Envoy extauth filter as part of Ambassador.

September 18, 2017: 0.11.0

0.11.0 was a major milestone in Ambassador history, as we abandoned the original REST-centric model in favor of a declarative model. We also eliminated the dependency on PostgreSQL.

October 5, 2017. 0.14.0 release. The diagnostics service is introduced. We wanted to introduce a feedback system early on so users could self-diagnose basic errors.

November 10, 2017: 0.16.0

0.16.0 is the first version of Ambassador that most users today would recognize, with support for annotations on Kubernetes services. We also exposed a number of Envoy features as annotations: use_websocket, timeout_ms, and more.

November 11, 2017. 0.19.0 release. We support originating TLS.

December 4, 2017. Envoy 1.5 release.

December 18, 2017. 0.20.0 release. We rebase on Envoy 1.5.

January 17, 2018: 0.23.0

Alex Gervais from AppDirect makes the first external contribution, with support for add_request_headers.

February 13, 2018. 0.26.0 release. We switch to the AuthService from the auth module.

March 20, 2018. Envoy 1.6 released.

March 26, 2018. 0.30.2 release. Stefan Prodan contributes a Helm chart.

April 27, 2018. 0.32 release. We add support for traffic shadowing and ambassador_id.

Summer 2018

More folks start using Ambassador in production, prompting various fixes for stability and reliability.

June 4, 2018. 0.34.1. Use gunicorn for diagd instead of Werkzeug, improving readiness/liveness probe reliability.

June 11, 2018. 0.34.2. We rebase on Envoy 1.6. (Should have been 0.35 instead!). WebSockets turns out not to work in this release (ugh). We realize that Envoy master requires more testing than expected.

June 21, 2018. Envoy 1.7 released.

July 18, 2018. 0.35.3. Rebase on Envoy 1.7. (Another semver violation).

July 26, 2018. 0.36.0. First release shipped by someone other than Flynn.

July 31, 2018. 0.37.0. Zipkin support.

August 3, 2018. Envoy 1.7.1 released.

Fall 2018

We start to get even more contributions in the fall. 0.40.0, released in September, featured contributions from eight (!!) non-Datawire contributors, including support for LightStep tracing.

The architectural limits of the Jinja2 architecture we had been using became apparent, and we also knew we had to move to the Envoy v2 APIs. This led us to shift our focus to an architectural and test suite revamp in the 0.50.x series. We wrote in more detail about this on the Kubernetes blog.

October 4, 2018. Envoy 1.8 released.

October 11, 2018. 0.50.0-ea1 released, built on Envoy 1.8.

Winter 2018

We worked steadily on writing regression tests for all the features in Ambassador 0.40.x and porting everything to 0.50. We finally GA’d 0.50.0 on January 29, 2019 with support for SNI. We also released our first version of Ambassador Pro.

With the 0.50 architecture in place, we tackled a huge backlog of feature requests.

February 21, 2019. 0.51 release. Support for TCP.

Spring 2018

With Spring here, we started to thaw our feature freeze. We also start putting more emphasis on supporting community contributors by simplifying our CI infrastructure and testing setup.

March 26, 2019. 0.52 release. Support for endpoint routing.

April 5, 2019. 0.53 release. Rebase on Envoy 1.9.1 for a security fix.

April 23, 2019. 0.60.0 release. Consul service discovery, support for Maglev, more timeout configurations.

May 8, 2019. 0.61.0 release. Circuit breakers and automatic retries.

What’s next

There’s still a long list of features we’re tackling in Ambassador and Ambassador Pro. We’ll be at KubeCon EU if you want to talk roadmap next week, and feel free to hop on our Slack or GitHub and join the community.

--

--

Published in Ambassador Labs

Code, ship, and run apps for Kubernetes faster and easier than ever — powered by Ambassador’s industry-leading developer experience.

Written by Richard Li

CEO, Amorphous Data. Formerly: Ambassador Labs, Duo Security, Rapid7, Red Hat.

No responses yet