Add minecraft server v1.0.0-1.16.4

Add minecraft server app with port, cpu, and ram configuration.
This commit is contained in:
ducoterra
2021-08-29 11:56:14 -04:00
parent 120c97a07d
commit aa2dede7d6
12 changed files with 277 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,23 @@
apiVersion: v2
name: minecraft
description: A Minecraft server for kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 1.16.4

View File

@@ -0,0 +1,80 @@
# Minecraft
## Getting server.jar
![Click Installations](img/main.png)
![Select the Options Menu](img/menu.png)
![Click Edit](img/edit.png)
![Click Download Server](img/server.png)
## Running Locally
```bash
docker-compose build minecraft
docker-compose up minecraft
```
## Uploading to Docker Hub
In docker-compose.yaml, update the image tag to:
```yaml
...
services:
minecraft:
build: .
image: <your_username>/minecraft:<version>-1
ports:
...
```
then run
```bash
docker-compose push
```
## Running in kubernetes
In k8s/deploy.yaml, edit the deploy
```yaml
...
spec:
containers:
- name: minecraft
image: <your image from above>
ports:
...
```
Then run the following
```bash
kubectl apply -f k8s/pvc
kubectl apply -f k8s
```
Your minecraft server will be available on port 25565
## Create a Backup
```bash
kubectl cp <pod_name>:/mc_data <backup>
```
## Restore from Backup
```bash
kubectl cp <backup> <pod_name>:/mc_data
```
## Cool seeds
### 7485786574821478084
Spawns you next to a nether portal with golden axe and pickaxe. River and Village close by.
### -8018833100564192815
Use with an amplified world, massive island

View File

@@ -0,0 +1,3 @@
# Minecraft Server
Creates a vanilla Minecraft server.

View File

@@ -0,0 +1 @@
image: ducoterra/minecraft:1.16.4

View File

@@ -0,0 +1,22 @@
groups:
- name: "Server Config"
description: "Minecraft Server Configuration"
questions:
- variable: port
description: "Listen Port"
group: "Server Config"
label: "Port"
schema:
type: int
- variable: max_ram
description: "Total RAM allocated to the server"
group: "Server Config"
label: "RAM Limit (GiB)"
schema:
type: int
- variable: max_cpu
description: "# CPU Cores Allocated to the server"
group: "Server Config"
label: "CPU Limit (# Cores)"
schema:
type: int

View File

@@ -0,0 +1,8 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
data:
eula.txt: |
eula=true
server.properties: {{ toYaml .Values.server_props | indent 2 }}

View File

@@ -0,0 +1,48 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: {{ .Release.Name }}
image: {{ .Values.image }}
ports:
- containerPort: 25565
volumeMounts:
- mountPath: /mc_data
name: data
- name: properties
mountPath: /mc_data/server.properties
subPath: server.properties
- name: properties
mountPath: /mc_data/eula.txt
subPath: eula.txt
tty: true
stdin: true
env:
- name: MAX_RAM
value: {{ .Values.max_ram | quote }}
- name: MIN_RAM
value: {{ .Values.max_ram | quote }}
resources:
requests:
memory: {{ .Values.max_ram }}Gi
cpu: 1m
limits:
memory: {{ .Values.max_ram }}Gi
cpu: {{ .Values.max_cpu | quote }}
volumes:
- name: data
persistentVolumeClaim:
claimName: {{ .Release.Name }}
- name: properties
configMap:
name: {{ .Release.Name }}

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}
annotations:
"helm.sh/resource-policy": keep
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32Gi

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
spec:
selector:
app: {{ .Release.Name }}
ports:
- port: {{ .Values.port }}
targetPort: 25565
name: {{ .Release.Name }}
type: LoadBalancer

View File

@@ -0,0 +1,42 @@
image: ducoterra/minecraft:1.16.4
port: 20101
max_cpu: 4
max_ram: 4
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

View File

@@ -0,0 +1,3 @@
categories:
- generic
icon_url: "http://ix_url"