This is a Kuberntes Opreator implemtntes with Go operator-framework/operator-sdk.
As basement for the Minecraft Instances we use the Container Image from itzg/docker-minecraft-server.
- Different CRDs for the Server Types, (FTB,Spigot,Vanilla)
- Plugin Handling, for Spigot/Bukkit Servers (planed)
- sladkoff/minecraft-prometheus-exporter for Prometheus Integration
- etc...
- Restore and Backup (planed)
- Restore the World from S3 Backup
- create a frequent Backup job based on implemented with stash.run
For easy local development use a combination of Visual Studio Code Remote - Containers and KuberntesInDocker.
As Base for the VisualStudio code, we use the qdm12/godevcontainer Project.
You will find the full VisualStudio Code Config at .devcontainer/devcontainer.json. The Development Container provide a base set of tools wich are requeired for development like the kind, terraform, helm, etc binaries.
kind create cluster
kind export kubeconfig
# Build the Operator Image
operator-sdk build minecraft-operator
# add the generated image to your local Kind Cluster
kind load docker-image minecraft-operator
kubectl delete -f /minecraft-operator/deploy/crds/minecraft.noltarium.de_v1alpha1_minecraft_cr.yaml
kubectl apply -f /minecraft-operator/deploy/crds/minecraft.noltarium.de_v1alpha1_minecraft_cr.yamlFor debugging use the Integreatly Operator lunch configuration.
# Regenerate Classes by changed types
operator-sdk generate k8s
operator-sdk run --local \
--namespace "operators-dev"