Minecraft Operator
A Kubernetes operator for dedicated servers of the video game Minecraft Java Edition. This allows you to administer and configure a Minecraft server solely using the Kubernetes API — no remote shell, SFTP, or graphical admin interfaces are required.
Note that this is
All the heavy-lifting is done by the excellent itzg/docker-minecraft-server. That container image is what is actually deployed into the cluster as a Pod
. This project isn't endorsed or supported by itzg either.
Installing
Use make install
from the root of this directory with your cluster configured in kubectl
.
Usage
You can configure a server like this. The operator will create a Pod
and Service
to this specification. Note that the API uses "allowList" in place of "whitelist", but it is applied to the server in the same way.
apiVersion: minecraft.jameslaverack.com/v1alpha1
kind: MinecraftServer
metadata:
name: my-minecraft-server
spec:
eula: Accepted
minecraftVersion: 1.18.1
type: Paper
opsList:
- name: Player1
uuid: da6a1ae6-e2f5-4e32-9135-b82a9ef426a9
allowList:
- name: Player2
uuid: 880182d6-a0e3-44cd-a57c-8dc3799e92b8
world:
persistentVolumeClaim:
claimName: minecraft-world
motd: "My Minecraft Server"
maxPlayers: 8
viewDistance: 16
externalServiceIP: 192.168.1.51
vanillaTweaks:
survival:
- 'multiplayer sleep'
- 'afk display'
items:
- 'player head drops'
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minecraft-world
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi