bdf470d67566c933373b8e5bf0c3b478e0cb45c7
Routes Minecraft client connections to backend servers based upon the requested server address.
Usage
Flags:
--help Show context-sensitive help (also try --help-long
and --help-man).
--port=25565 The port bound to listen for Minecraft client
connections
--api-binding=API-BINDING The host:port bound for servicing API requests
--mapping=MAPPING ... Mapping of external hostname to internal server
host:port
REST API
GET /routesRetrieves the currently configured routesPOST /routesRegisters a route given a JSON body structured like:
{
"serverAddress": "CLIENT REQUESTED SERVER ADDRESS",
"backend": "HOST:PORT"
}
DELETE /routes/{serverAddress}Deletes an existing route for the givenserverAddress
Example kubernetes deployment
These deployments declare an mc-router that exposes a node port service
on the standard Minecraft server port 25565. Two "backend" Minecraft servers are declared as example
where users can choose stable/vanilla or snapshot simply based on the hostname they used.
kubectl apply -f https://raw.githubusercontent.com/itzg/mc-router/master/docs/k8s-example.yaml
Notes
- This deployment assumes two persistent volume claims:
mc-stableandmc-snapshot - I extended the allowed node port range by adding
--service-node-port-range=25000-32767to/etc/kubernetes/manifests/kube-apiserver.yaml
Coming Soon
- Make
mc-routerkubernetes service aware. It would watch for backend instances with well known annotations and dynamically create/remove routes accordingly
Description
Fork of itzg/mc-router with automc extensions (Postgres LISTEN/NOTIFY route source, login-state kick to waker). Soft fork — upstream/main tracked verbatim, automc-specific code in internal/automc/.
Languages
Go
99.6%
Dockerfile
0.3%
