For configuring built-in gateway listeners, use the MeshGateway resource.
These are Kong Mesh policies so if you are running on multi-zone they need to be created on the Global CP. See the dedicated section for using builtin gateways on multi-zone.
The MeshGateway resource specifies what network ports the gateway should listen on and how network traffic should be accepted.
A builtin gateway Dataplane can have exactly one MeshGateway resource bound to it.
This binding uses standard, tag-based Kong Mesh matching semantics:
A MeshGateway can have any number of listeners, where each listener represents an endpoint that can accept network traffic.
Note that the MeshGateway doesn’t specify which IP addresses are listened on; the Dataplane resource specifies that.
To configure a listener, you need to specify at least the port number and network protocol. Each listener may also have its own set of Kong Mesh tags so that Kong Mesh policy configuration can be targeted to specific listeners.
Hostname
An HTTP or HTTPS listener can also specify a hostname.
Note that listeners can share both port and protocol but differ on hostname.
This way routes can be attached to requests to specific hostnames but share
the port/protocol with other routes attached to other hostnames.
In the above example, the gateway proxy listens for HTTP protocol connections on TCP port 8080 but restricts the Host header to foo.example.com.
Above shows a MeshGateway resource with two HTTP listeners on the same port.
In this example, the gateway proxy will be configured to listen on port 8080, and accept HTTP requests for both hostnames.
Note that because each listener entry has its own Kong Mesh tags, policy can still be targeted to a specific listener.
Kong Mesh generates a set of tags for each listener by combining the tags from the listener, the MeshGateway and the Dataplane.
Kong Mesh matches policies against this set of combined tags.
Dataplane tags |
Listener tags | Final Tags |
|---|---|---|
| kuma.io/service=edge-gateway_default_svc | vhost=foo.example.com | kuma.io/service=edge-gateway_default_svc,vhost=foo.example.com |
| kuma.io/service=edge-gateway_default_svc | kuma.io/service=example,domain=example.com | kuma.io/service=example,domain=example.com |
| kuma.io/service=edge_default_svc,location=us | version=2 | kuma.io/service=edge_default_svc,location=us,version=2 |