docs: added docker-compose example

This commit is contained in:
Geoff Bourne 2019-07-27 11:36:16 -05:00
parent ca572184b2
commit 7f6e3637a0
5 changed files with 544 additions and 6 deletions

View File

@ -6,7 +6,7 @@
Routes Minecraft client connections to backend servers based upon the requested server address.
## Usage
# Usage
```text
Flags:
@ -15,11 +15,10 @@ Flags:
--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
--mapping=MAPPING,MAPPING Where MAPPING is externalHostname=host:port
```
## REST API
# REST API
* `GET /routes`
Retrieves the currently configured routes
@ -41,6 +40,28 @@ Flags:
* `DELETE /routes/{serverAddress}`
Deletes an existing route for the given `serverAddress`
# Docker Compose Usage
The following diagram shows how [the example docker-compose.yml](docs/docker-compose.yml)
configures two Minecraft server services named `vanilla` and `forge`, which also become the internal
network aliases. _Notice those services don't need their ports exposed since the internal
networking allows for the inter-container access._
The `router` service is only one of the services that needs to exposed on the external
network. The `--mapping` declares how the hostname users will enter into their Minecraft client
will map to the internal services.
![](docs/compose-diagram.png)
To test out this example, I added these two entries to my "hosts" file:
```
127.0.0.1 vanilla.example.com
127.0.0.1 forge.example.com
```
# Kubernetes Usage
## Using kubernetes service auto-discovery
When running `mc-router` as a kubernetes pod and you pass the `--in-kube-cluster` command-line argument, then

BIN
docs/compose-diagram.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

496
docs/compose-diagram.svg Normal file
View File

@ -0,0 +1,496 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="692"
height="436.50003"
viewBox="0 0 183.09166 115.49064"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="compose-diagram.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4856"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#007921;fill-opacity:1;fill-rule:evenodd;stroke:#007921;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path4854"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4585"
style="fill:#007921;fill-opacity:1;fill-rule:evenodd;stroke:#007921;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="381.7346"
inkscape:cy="250.80659"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-midpoints="true"
inkscape:window-width="1920"
inkscape:window-height="1137"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
units="px"
fit-margin-top="10"
fit-margin-left="10"
fit-margin-right="10"
fit-margin-bottom="10" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-13.493748,-62.579173)">
<image
y="65.225006"
x="16.139582"
id="image3721"
xlink:href="data:image/png;base64,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
"
style="image-rendering:optimizeSpeed"
preserveAspectRatio="none"
height="89.429169"
width="177.8" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0016ff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 73.951045,154.52187 H 109.40521"
id="path4529"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4531"
d="m 136.78959,154.52187 h 31.74999"
style="fill:none;fill-rule:evenodd;stroke:#0016ff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:#0016ff;fill-opacity:1;stroke:#0016ff;stroke-width:0.52916664;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 78.316663,161.79793 h 5.29167 l 3.042709,-5.95312 2.116666,5.95312 H 142.875 l 2.51354,-5.82083 2.77813,5.82083 h 17.59479 c 1.75895,0 3.175,1.41605 3.175,3.175 v 7.01146 c 0,1.75895 -1.41605,3.175 -3.175,3.175 H 78.316663 c -1.75895,0 -3.175,-1.41605 -3.175,-3.175 v -7.01146 c 0,-1.75895 1.41605,-3.175 3.175,-3.175 z"
id="rect4533"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccccccssssssss" />
<flowRoot
xml:space="preserve"
id="flowRoot4536"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#fff8f8;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,1.190625,-2.5135416)"><flowRegion
id="flowRegion4538"
style="fill:#fff8f8;fill-opacity:1;stroke:none;stroke-opacity:1"><rect
id="rect4540"
width="414"
height="158.5"
x="296.5"
y="621.51971"
style="fill:#fff8f8;fill-opacity:1;stroke:none;stroke-opacity:1" /></flowRegion><flowPara
id="flowPara4542"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#fff8f8;fill-opacity:1;stroke:none;stroke-opacity:1">External hostnames</flowPara></flowRoot> <path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4544"
d="m 110.72813,149.41729 h 13.19062"
style="fill:none;fill-rule:evenodd;stroke:#007921;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#007921;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 170.03524,149.41729 h 9.54239"
id="path4546"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#007921;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="M 117.32344,149.41729 C 93.52871,135.64931 6.5677294,114.74326 33.866666,85.06875"
id="path4548"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path4852"
d="M 174.80643,149.41729 C 152.78337,120.01012 112.13991,103.7288 47.09583,104.64792"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#007921;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4856)"
sodipodi:nodetypes="cc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

18
docs/docker-compose.yml Normal file
View File

@ -0,0 +1,18 @@
version: '3.4'
services:
vanilla:
image: itzg/minecraft-server
environment:
EULA: "TRUE"
forge:
image: itzg/minecraft-server
environment:
EULA: "TRUE"
TYPE: FORGE
router:
image: itzg/mc-router
ports:
- 25565:25565
command: --mapping=vanilla.example.com=vanilla:25565,forge.example.com=forge:25565

View File

@ -4,10 +4,13 @@ kind: Service
metadata:
name: mc-stable
annotations:
"mc-router.itzg.me/defaultServer": "mc.your.domain"
"mc-router.itzg.me/defaultServer": "true"
spec:
type: ClusterIP
ports:
- port: 25565
- port: 25566
name: mc-router
targetPort: 25565
selector:
run: mc-stable
---