Routes Minecraft client connections to backend servers based upon the requested server address
Go to file
2018-05-26 14:03:04 -05:00
.circleci ci: abstract glide into makefile 2018-05-26 12:42:41 -05:00
cmd/mc-router Use --in-kube-cluster to indicate in-cluster mode 2018-05-26 13:10:45 -05:00
docs docs: document auto service discovery example 2018-05-26 14:03:04 -05:00
mcproto Initial commit 2018-05-07 22:16:01 -05:00
server Use --in-kube-cluster to indicate in-cluster mode 2018-05-26 13:10:45 -05:00
.gitignore Initial commit 2018-05-07 22:16:01 -05:00
.goreleaser.yml docs: document auto service discovery example 2018-05-26 14:03:04 -05:00
Dockerfile ci: avoid /tmp creation in Dockerfile 2018-05-26 13:17:21 -05:00
glide.lock Auto-register routes based on kubernetes service annotations 2018-05-26 12:31:40 -05:00
glide.yaml Auto-register routes based on kubernetes service annotations 2018-05-26 12:31:40 -05:00
LICENSE.txt Initial commit 2018-05-07 22:16:01 -05:00
Makefile ci: abstract glide into makefile 2018-05-26 12:42:41 -05:00
README.md docs: document auto service discovery example 2018-05-26 14:03:04 -05:00

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 /routes Retrieves the currently configured routes
  • POST /routes Registers 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 given serverAddress

Example kubernetes deployment

This example deployment

  • Declares an mc-router service that exposes a node port 25565
  • Declares a service account with access to watch and list services
  • Declares --in-kube-cluster in the mc-router container arguments
  • Two "backend" Minecraft servers are declared each with an "mc-router.itzg.me/externalServerName" annotation that declares their external server name
kubectl apply -f https://raw.githubusercontent.com/itzg/mc-router/master/docs/k8s-example-auto.yaml

Notes

  • This deployment assumes two persistent volume claims: mc-stable and mc-snapshot
  • I extended the allowed node port range by adding --service-node-port-range=25000-32767 to /etc/kubernetes/manifests/kube-apiserver.yaml