Current State of Ingress in Kubernetes
After you deploy a Kubernetes application, you typically need to expose it to end users. This is usually done using an Ingress Controller. The Ingress API object defines the routing and mapping of external traffic to the Kubernetes service. It also provides load balancing, SSL termination, and name-based virtual hosting. Currently, the native Ingress API is very limited in scope.
While this basic set of ingress controls was enough to get started, the need for more sophisticated controls over incoming traffic led to the development of additional tools to add more control over ingress. Many commercial controllers, such as the NGINX Ingress Controller and HAProxy, implement the Kubernetes Ingress interface. These controllers differentiate themselves from each other by providing more features, such as advanced load balancing. Advanced functionality is now coming with the Kubernetes Gateway API.
What is the Kubernetes Gateway API?
The Kubernetes Gateway API is the first step toward adding additional control over ingress patterns directly in Kubernetes. It represents a new standard in defining how to configure and manage how traffic is defined and routed in Kubernetes. This extensible API is a collection of resources that models a network of services in Kubernetes and provides a standard way to describe how inbound traffic routes can be defined. The Gateway API consists of three new resources to define.
- GatewayClass: This exists at a cluster level to describe the set of common configurations and behaviors for a set of Gateways.
- Gateway: A gateway defines how traffic can connect to the services that exist in the cluster.
- Routes: These describe how to map incoming requests to the services. These can be defined as HTTPRoute, TLSRoute, TCPRoute/UDPRoute or GRPCRoute.
Image Source: Kubernetes
GatewayClass must be defined in order to have any Gateways in a cluster. Each Gateway defines how incoming traffic will connect through a Route to the service it is destined to connect with. This combination of resources allows for greater control of how ingress traffic is routed to the services in the Kubernetes cluster. These resources (including GatewayClass, Gateway, HTTPRoute, TCPRoute, and Service) provide expressive, scalable, role-oriented interfaces that are implemented by a variety of vendors, with wide industry support.
Why is the Gateway API important For Kubernetes?
The Gateway API is an evolution of Ingress that extends the API definition to provide advanced functionality, as a native part of Kubernetes. You can access some of these via private extensions to Ingress offered by various vendors, but their implementations are not coordinated with each other. In the new Kubernetes Gateway API, many of these features are implemented by multiple vendors following a single specification, providing users with multiple implementation options.
Solo and the Kubernetes Gateway API
We continue to work with the latest Kubernetes Gateway API to ensure that Solo products are able to use the advancements the community has built into Kubernetes. As a new standard for defining how traffic is routed and managed, the Kubernetes Gateway API will become the new standard for ingress controls and more over time. Learn more about Gloo Gateway.
Choosing an API Gateway
API gateways are evolving and there are several good choices available. The introduction of the Kubernetes Gateway API provides a foundation to improve how gateways can be better integrated with Kubernetes itself. As the Kubernetes Gateway API evolves, more vendors will continue to build their solutions on top of this model. When choosing the best API gateway for your needs, we recommend considering the following:
- An API gateway should be vendor agnostic and should not lock you into a specific cloud environment.
- An API gateway should be robust and mature, based on components with a long track record of reliability and resilience.
- An API gateway should provide enterprise-grade security features.
- An API gateway should provide advanced traffic management, routing, and service management features to support large microservices environments.
Learn how Solo Gloo Gateway meets all these requirements.