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 |