mc-router/README.md

51 lines
1.7 KiB
Markdown
Raw Normal View History

2018-05-08 05:16:01 +02:00
Routes Minecraft client connections to backend servers based upon the requested server address.
## Usage
```text
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:
```json
{
"serverAddress": "CLIENT REQUESTED SERVER ADDRESS",
"backend": "HOST:PORT"
}
```
* `DELETE /routes/{serverAddress}`
2018-05-25 03:19:14 +02:00
Deletes an existing route for the given `serverAddress`
## Example kubernetes deployment
[This example deployment](docs/k8s-example-auto.yaml)
* 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
2018-05-25 03:19:14 +02:00
```bash
kubectl apply -f https://raw.githubusercontent.com/itzg/mc-router/master/docs/k8s-example-auto.yaml
2018-05-25 03:19:14 +02:00
```
![](docs/example-deployment-auto.drawio.png)
2018-05-25 03:19:14 +02:00
#### 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`