forked from hswaw/hscloud
personal/q3k/minecraft: init
Change-Id: I39585afa33411f2a58185469015aed3b2b4dcdeb
This commit is contained in:
parent
98ef1518e0
commit
d1ccdcff3d
2 changed files with 231 additions and 0 deletions
43
personal/q3k/minecraft/Dockerfile-vanilla
Normal file
43
personal/q3k/minecraft/Dockerfile-vanilla
Normal file
|
@ -0,0 +1,43 @@
|
|||
FROM ubuntu:20.04
|
||||
|
||||
RUN set -e -x ;\
|
||||
export DEBIAN_FRONTEND=noninteractive ;\
|
||||
apt-get -y update ;\
|
||||
apt-get -y upgrade ;\
|
||||
apt-get -y install git openjdk-8-jre-headless wget
|
||||
|
||||
RUN set -e -x ;\
|
||||
export DEBIAN_FRONTEND=noninteractive ;\
|
||||
apt-get -y install build-essential python3-dev python3-pil python3-numpy ;\
|
||||
mkdir overviewer ;\
|
||||
cd overviewer ;\
|
||||
wget --quiet https://github.com/overviewer/Minecraft-Overviewer/archive/v0.15.0.tar.gz ;\
|
||||
tar xvf *.tar.gz ;\
|
||||
cd Minecraft-Overviewer* ;\
|
||||
python3 setup.py build ;\
|
||||
python3 setup.py install ;\
|
||||
cd ../.. ;\
|
||||
rm -rf overviewer ;\
|
||||
apt-get -y purge python3-dev build-essential
|
||||
|
||||
|
||||
RUN set -e -x ;\
|
||||
useradd -rm minecraft
|
||||
|
||||
USER minecraft
|
||||
WORKDIR /home/minecraft
|
||||
|
||||
RUN set -e -x ;\
|
||||
mkdir build ;\
|
||||
cd build ;\
|
||||
wget --quiet https://hub.spigotmc.org/jenkins/job/BuildTools/112/artifact/target/BuildTools.jar ;\
|
||||
java -jar BuildTools.jar --rev 1.15.2 ;\
|
||||
cp spigot*jar .. ;\
|
||||
cd .. ;\
|
||||
rm -rf build ;\
|
||||
mv spigot*.jar spigot.jar
|
||||
|
||||
RUN set -e -x ;\
|
||||
VERSION=1.15.2 ;\
|
||||
mkdir -p /home/minecraft/.minecraft/versions/${VERSION}/ ;\
|
||||
wget --quiet https://overviewer.org/textures/${VERSION} -O /home/minecraft/.minecraft/versions/${VERSION}/${VERSION}.jar
|
188
personal/q3k/minecraft/prod.jsonnet
Normal file
188
personal/q3k/minecraft/prod.jsonnet
Normal file
|
@ -0,0 +1,188 @@
|
|||
local kube = import "../../../kube/kube.libsonnet";
|
||||
|
||||
{
|
||||
local minecraft = self,
|
||||
versions:: {
|
||||
"spigot-1.15.2": "registry.k0.hswaw.net/q3k/minecraft:spigot-1.15.2-r2",
|
||||
},
|
||||
server(name, version):: {
|
||||
local server = self,
|
||||
name:: name,
|
||||
version:: version,
|
||||
image:: minecraft.versions[server.version],
|
||||
|
||||
metadata:: {
|
||||
namespace: "minecraft",
|
||||
},
|
||||
|
||||
componentName(component):: "%s-%s" % [server.name, component],
|
||||
|
||||
properties:: {
|
||||
"spawn-protection": 16,
|
||||
"max-tick-time": 60000,
|
||||
"query.port": 25565,
|
||||
"generator-settings": "",
|
||||
"force-gamemode": false,
|
||||
"allow-nether": true,
|
||||
"enforce-whitelist": false,
|
||||
"gamemode": "survival",
|
||||
"broadcast-console-to-ops": true,
|
||||
"enable-query": false,
|
||||
"player-idle-timeout": 0,
|
||||
"difficulty": "easy",
|
||||
"broadcast-rcon-to-ops": true,
|
||||
"spawn-monsters": true,
|
||||
"op-permission-level": 4,
|
||||
"pvp": true,
|
||||
"snooper-enabled": true,
|
||||
"level-type": "default",
|
||||
"hardcore": false,
|
||||
"enable-command-block": false,
|
||||
"network-compression-threshold": 256,
|
||||
"max-players": 20,
|
||||
"max-world-size": 29999984,
|
||||
"resource-pack-sha1": "",
|
||||
"function-permission-level": 2,
|
||||
"rcon.port": 25575,
|
||||
"server-port": 25565,
|
||||
"debug": false,
|
||||
"server-ip": "",
|
||||
"spawn-npcs": true,
|
||||
"allow-flight": false,
|
||||
"level-name": "world",
|
||||
"view-distance": 10,
|
||||
"resource-pack": "",
|
||||
"spawn-animals": true,
|
||||
"white-list": false,
|
||||
"rcon.password": "",
|
||||
"generate-structures": true,
|
||||
"online-mode": true,
|
||||
"max-build-height": 256,
|
||||
"level-seed": "",
|
||||
"prevent-proxy-connections": false,
|
||||
"use-native-transport": true,
|
||||
"motd": "A Minecraft Server",
|
||||
"enable-rcon": false,
|
||||
},
|
||||
|
||||
startsh:: |||
|
||||
#!/usr/bin/env bash
|
||||
cd /home/minecraft/world
|
||||
cp /home/minecraft/config/server.properties .
|
||||
cp /home/minecraft/spigot.jar .
|
||||
echo "eula=true" > eula.txt
|
||||
|
||||
bash /home/minecraft/config/overviewer.sh &
|
||||
exec java -Xmx4G -Xms4G -jar spigot.jar
|
||||
|||,
|
||||
|
||||
overviewersh:: |||
|
||||
#!/usr/bin/env bash
|
||||
mkdir -p overviewer/world
|
||||
sleep 60
|
||||
while true; do
|
||||
echo "Rendering Overviewer map..."
|
||||
overviewer.py -p 1 --rendermodes=normal,lighting,smooth-lighting,cave world overviewer/world
|
||||
echo "Done."
|
||||
sleep 900
|
||||
done
|
||||
|||,
|
||||
|
||||
secretProperties: kube.Secret(server.componentName("properties")) {
|
||||
metadata+: server.metadata,
|
||||
data: {
|
||||
local properties = std.join("\n", ["%s=%s" % [k, std.toString(server.properties[k])] for k in std.objectFields(server.properties)]),
|
||||
"server.properties": std.base64(properties),
|
||||
"start.sh": std.base64(server.startsh),
|
||||
"overviewer.sh": std.base64(server.overviewersh),
|
||||
},
|
||||
},
|
||||
|
||||
worldVolume: kube.PersistentVolumeClaim(server.componentName("world")) {
|
||||
metadata+: server.metadata,
|
||||
spec+: {
|
||||
storageClassName: "waw-hdd-redundant-3",
|
||||
accessModes: ["ReadWriteOnce"],
|
||||
resources: {
|
||||
requests: {
|
||||
storage: "10Gi",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
deploy: kube.Deployment(server.componentName("deploy")) {
|
||||
metadata+: server.metadata,
|
||||
spec+: {
|
||||
template+: {
|
||||
spec+: {
|
||||
volumes_: {
|
||||
config: kube.SecretVolume(server.secretProperties),
|
||||
world: kube.PersistentVolumeClaimVolume(server.worldVolume),
|
||||
},
|
||||
containers_: {
|
||||
default: kube.Container("default") {
|
||||
image: server.image,
|
||||
command: [
|
||||
"bash", "/home/minecraft/config/start.sh",
|
||||
],
|
||||
volumeMounts_: {
|
||||
config: { mountPath: "/home/minecraft/config" },
|
||||
world: { mountPath: "/home/minecraft/world" },
|
||||
},
|
||||
ports_: {
|
||||
minecraft: { containerPort: 25565 },
|
||||
},
|
||||
resources: {
|
||||
requests: {
|
||||
memory: "6G",
|
||||
cpu: "2",
|
||||
},
|
||||
limits: {
|
||||
memory: "6G",
|
||||
cpu: "4",
|
||||
},
|
||||
},
|
||||
},
|
||||
overviewer: kube.Container("overviewer") {
|
||||
image: "halverneus/static-file-server:v1.8.0",
|
||||
env_: {
|
||||
FOLDER: "/home/minecraft/world/overviewer/world",
|
||||
},
|
||||
volumeMounts_: {
|
||||
world: { mountPath: "/home/minecraft/world" },
|
||||
},
|
||||
ports_: {
|
||||
web: { containerPort: 8080 },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
svc: kube.Service(server.componentName("svc")) {
|
||||
metadata+: server.metadata,
|
||||
target_pod:: server.deploy.spec.template,
|
||||
spec+: {
|
||||
ports: [
|
||||
{ name: "minecraft", port: 25565, targetPort: 25565, protocol: "TCP" },
|
||||
{ name: "web", port: 80, targetPort: 8080, protocol: "TCP" },
|
||||
],
|
||||
type: "LoadBalancer",
|
||||
externalTrafficPolicy: "Local",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
ns: kube.Namespace("minecraft"),
|
||||
|
||||
q3k: {
|
||||
survival: minecraft.server("q3k-survival", "spigot-1.15.2") {
|
||||
properties+: {
|
||||
motd: "wypierdol z polski kropka pe el",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
Loading…
Reference in a new issue