This episode explains why Multigress exists: the limitations of classic Ingress, the birth of the Gateway API, comparisons with Ingress Controller, API Gateway, and Istio Gateway, and the main use cases of ingress, egress, service mesh gatewaying, and edge routing.

Traffic management in Kubernetes once meant a single narrow path: the Ingress object controlled by a single controller with a mountain of annotations. For years this pattern survived, but it started to feel cramped as applications grew more complex. The need emerged for a more expressive, vendor-neutral API capable of handling ingress, egress, and mesh at the same time.
Episode 1 discusses why Multigress exists, how it fits into the cloud native ecosystem, its comparison with other solutions like Ingress Controller, API Gateway, and Istio Gateway, and the main use cases that make it compelling. This episode is narrative — minimal commands — but this is exactly where you'll understand why this series is worth following to the end.
You don't need to install anything in this episode. Jot down any questions that come up while reading, and make sure they're all answered by the time we reach episode 2.
The Ingress object was born to solve a simple need: routing HTTP by host and path. Unfortunately, its spec is far too minimal. Features like rewrite, authentication, rate limiting, and TLS passthrough are not available in the core API. Each controller ends up inventing its own annotations, making configuration non-portable, hard to validate, and impossible to move between implementations.
The most common problems include:
Out of those limitations, the Kubernetes community created the Gateway API — a superset of Ingress with explicit GatewayClass, Gateway, and HTTPRoute concepts. This API supports features that previously required annotations, and provides clear status and conditions for every resource.
Resources that used to need dozens of Ingress annotations can now simply be declared as objects with explicit fields. That's what makes configuration validatable by tools like kubeconform, which we'll use in episode 19.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: echo-route
spec:
parentRefs:
- name: main-gateway
hostnames:
- "echo.example.com"
rules:
- backendRefs:
- name: echo
port: 80Notice: no annotations at all. The kubectl apply -f route.yaml command is enough to apply the configuration above to any Gateway API implementation.
Multigress was born as an answer to two needs at once: a standard API and a lightweight runtime. Architecturally, Multigress consists of two layers:
The workflow is simple: you write Gateway and HTTPRoute, the controller reads them, and the data plane is updated without downtime. This architecture is covered in detail in episode 2.
You need to understand Multigress's position so you don't pick the wrong tool:
Multigress is not a service mesh replacement. It is a standalone gateway layer that can be installed alongside a mesh when needed. This comparison becomes relevant again in episodes 13 and 17.
Multigress's core value lies in its consistency: one declarative way to handle traffic in every direction, with strong validation through the Gateway API.
kubectl api-resources | grep -i gatewayIf no implementation is installed yet, the output only shows the built-in resources. That's normal before episode 3.
The most basic use case: receive HTTP or HTTPS traffic from outside, terminate TLS at the gateway, then direct requests to the right Service based on host and path. This is what you'll build starting in episode 3.
Multigress can also serve as the exit point for traffic. All requests from pods to the outside world pass through a single egress gateway so policies, logging, and access control can be applied centrally. Full details are in episode 13.
When installed alongside a mesh like Istio, Multigress can act as a gateway that understands workload identity. Incoming traffic is verified and forwarded with mTLS all the way to the backend pod, opening up zero-trust patterns at the edge.
The last use case, which is on the rise: edge routing across clusters. A single entry point forwards requests to the right cluster based on location or latency — the full topic in episode 17.
The four use cases above aren't a rigid list. They can be combined, and most production patterns we'll cover use more than one at a time.
Episode 1 explained why Multigress exists: the limitations of classic Ingress gave birth to the Gateway API, and Multigress is one of its implementations that unifies ingress, egress, and gatewaying in a single control plane and data plane architecture.
The key takeaways:
In the next episode 2 we'll dissect the core concepts and main architecture of Multigress — the roles of control plane and data plane, the components of the multigress controller, the Gateway API, and the Envoy or HAProxy backend, the flow from GatewayClass to HTTPRoute, and integration with Multigress-specific CRDs. Make sure the concepts from episode 1 have sunk in before moving on.