MinecraftJoinRoute maps hostnames to backend game servers. The edge proxy uses the filterRules to build its hostname-to-cluster map. When a player connects, their server_address handshake field is matched against these rules and they are forwarded to the corresponding backend.
spec.hostnames declares which hostnames this route is available for. The edge proxy uses this to know which incoming connections this route can handle. filterRules[].rules[].domain defines the actual routing logic: which domain patterns map connections to this route’s backends.
API group: gateway.networking.minefleet.dev/v1alpha1
Example
Spec fields
parentRefs
Which Gateway listeners this route attaches to. Uses the standard Gateway API ParentReference type.
hostnames
hostname is compatible.
- An exact hostname (e.g.
play.example.com) is compatible with a listener whosehostnameis the same value or a wildcard that covers it (e.g.*.example.com). - A wildcard hostname (e.g.
*.example.com) is compatible with a listener whosehostnamematches or is itself a wildcard with the same suffix.
hostnames is omitted, the route attaches to all listeners that allow it by allowedRoutes.
hostnames is about availability — signalling to the edge which hostnames this route handles. The actual routing logic (which domain patterns map to which backends, with what conditions) lives in filterRules. In practice, you will usually set both to the same values.
backendRefs
The game server backends to forward matching connections to.
distributionStrategy.type values:
Regardless of strategy, full servers (where
current-players >= max-players) are always excluded from selection. If all servers in a service are full, the service is treated as unavailable. See Server Capacity.
filterRules
A list of rule sets that define which hostnames this route matches. Each rule set has a type and a list of rules.
Rule set
type values:
MinecraftJoinFilterRule fields:
At least one of
domain or permission must be set per rule.
priority
0.
Domain matching
Domains are matched by the edge proxy using two strategies, tried in order:- Exact match —
play.example.commatches onlyplay.example.com. - Wildcard match —
*.example.commatchesanything.example.combut notexample.comitself.
Status
The route’s status follows the standard Gateway APIRouteStatus shape with a parents list. Each parent reports an Accepted condition indicating whether the route successfully attached to the listener.