Ambassador Labs

Code, ship, and run apps for Kubernetes faster and easier than ever — powered by Ambassador’s…

Follow publication

Envoy Gateway 0.3.0 Release

Dave Sudia
Ambassador Labs
Published in
4 min readFeb 14, 2023

Welcome to the first article in our series on Envoy Gateway releases, covering the February 2023 release of v0.3.0. Our goal with this series is not just to rehash the release notes or cover them in full but to highlight major and minor changes we think are important and provide context. This release includes

  • Compatibility with Kubernetes Gateway API v0.6.1
  • Support for extended Gateway API fields
  • Support for experimental Gateway APIs, including GRPCRoute and UDPRoute
  • Global Rate Limiting
  • Authentication
  • WebSocket support
  • Separate scaling of the control plane and Envoy Proxy

What is Envoy Gateway?

Envoy Gateway is an implementation of the Kubernetes Gateway API based on Envoy Proxy. The goal is to leverage Envoy Proxy's capabilities as a gateway, just like Ambassador Labs’ Emissary-Ingress project, but by following the new common standard of the Gateway API. Ambassador Labs is on the steering committee for Envoy Gateway along with Tetrate, VMWare, Fidelity Investments, and Tencent.

Ambassador Labs’ goal is to get Envoy Gateway to the point of maturity and capability that it can be seamlessly dropped into any environment currently using Emissary-Ingress or Ambassador Edge Stack as an API gateway.

Key Envoy Gateway Updates

To avoid overcrowding this article, if you need an overview of what “extended” and “experimental” fields and APIs mean, check out my previous post on the Gateway API 0.6.0 release, where we discuss the various release channels of that project.

Extended Gateway API fields

Filters in the Gateway API are ways to do additional processing on a request, like modifying the request or response, doing authentication (see below!), etc. The 0.3.0 release of Envoy Gateway adds support for three new filters on HTTPRoutes:

Experimental Gateway APIs

In addition to the HTTPRoute and TLSRoute resources that are in the Gateway API Standard release channel, Envoy Gateway now supports three experimental APIs:

  • TCPRoute
  • UDPRoute
  • GRPCRoute

These additions continue to bring Envoy Gateway closer to feature parity with Edge Stack, and in some ways, go beyond it! Certain use cases require L4 protocol usage. Edge Stack provides the TCPMapping but does not have any UDP support. Envoy Gateway now supports both. I covered GRPCRoute in depth in my Gateway API post, but it’s basically a nicer interface for configuring gRPC routing than using the standard HTTPRoute, and it’s cool to see it land so quickly in Envoy Gateway.

New custom filters

The Gateway API defines three levels of conformance:

  • Core
  • Extended
  • Implementation-specific

These levels allow the API to define common standards while allowing each implementation to add features that may not work in all the implementations. Envoy Gateway adds two implementation-specific filters in this release to provide two key pieces of functionality for an API gateway.

Rate limiting

The new RateLimitFilter allows for global rate limiting on a given route. While global rate limiting is…limited in its value, this early implementation sets the stage for more complex forms of rate limiting and acts as an example of how to use the API.

Authentication

Similarly, the new AuthenticationFilter is currently limited to JWT authentication, but that’s a great place to start, as it’s one of the most commonly used authentication methods. It allows the user to point Envoy Gateway at a remote key set endpoint to validate encryption keys, check the token issuer, and list the audiences allowed to access the route.

WebSocket support

This is one of the most exciting features to me because I’ve done a lot of work with WebSockets, and supporting that protocol feels like table stakes for an API gateway. However, in the Gateway API, support for Websockets is stuck in a Gateway Enhancement Proposal (GEP) that states the need for creating a standard to simply describe things like Websockets, re-encryption, or HTTP/2 support. So to see Envoy Gateway add support for WebSocket upgrades ahead of the Gateway API and make those upgrades automatic is awesome! It makes the experience more seamless for users and would have saved me a few Mappings in my previous roles.

Scaling

Another new addition is the ability to separately scale the pods in the Envoy Gateway control plane and the Envoy Proxy pods that actually do the traffic routing. The process is somewhat obtuse right now as it’s done in a config map:

apiVersion: v1
kind: ConfigMap
metadata:
name: envoy-gateway-config
namespace: envoy-gateway-system
data:
envoy-gateway.yaml: |
apiVersion: config.gateway.envoyproxy.io/v1alpha1
kind: EnvoyGateway
provider:
type: Kubernetes
gateway:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
---
apiVersion: config.gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: envoyproxy-sample
spec:
provider:
type: Kubernetes
kubernetes:
envoyDeployment:
replicas: 2

However, as the project matures and ease-of-use features like a Helm chart are created, I’m sure this interface will improve.

The Next Envoy Gateway Release

The next release of Kubernetes Gateway API will be v0.4.0 with a theme of “Manageability and Scale.” The majority of work being done is visible in the 0.4.0-rc.1 milestone on GitHub. We’ll provide an update when that release is available!

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

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 Dave Sudia

Director of Developer Relations at Ambassador Labs.

No responses yet

Write a response