Open fabianvf opened 5 years ago
Thanks for writing this up! Here's my initial/random thoughts reading through this:
In "Minecraft" block
Add recovery mechanisms
can you expand on any initial ideas?
In "MinecraftNetwork",
Should deploy a default, minimal lobby server (possibly with version/mod compatibility plugins)
this sounds super awesome, but am wondering if that should even be another CRD itself or perhaps its a specific use of the "Minecraft" CRD. On the one hand it logically belongs with the bungee configuration since a lobby is required, but all the mod/plugin you mentioned would be an existing concern a "Minecraft" resource.
Also in "MinecraftNetwork"
Should validate that deployed servers in the network are compatible, and expose compatibility issues in the status
That seems like a stretch goal :) , but very cool
In "Stretch Goals"
Hosting of client-side mods so that users can download the proper mods for a server without needing to track it down online
I'd like to selfishly rank that one even higher; however, this might be a broader concern than the CRDs. It also would require researching leveraging of Twitch/Curse client's ability to load modpacks into the client.
Add recovery mechanisms
can you expand on any initial ideas?
I don't really have a concrete idea for this yet, I know you have a sidecar container for doing regular backups. A few other operators have XBackup
/XRestore
CRDs, which is probably the best way to do it for now. A MinecraftBackup
would reference a specific Minecraft
and create a backup, and a MinecraftRestore
would reference a specific Minecraft
and a specific MinecraftBackup
. We could automatically create the MinecraftBackup
resources when your sidecar creates a new backup (it would probably take the backup and put it in an entirely separate volume). The MinecraftRestore
resource would spin down the server, copy the backup back into the real volume, bring the server back up and then probably delete itself on success.
Should deploy a default, minimal lobby server (possibly with version/mod compatibility plugins)
this sounds super awesome, but am wondering if that should even be another CRD itself or perhaps its a specific use of the "Minecraft" CRD. On the one hand it logically belongs with the bungee configuration since a lobby is required, but all the mod/plugin you mentioned would be an existing concern a "Minecraft" resource.
I would probably make it create a Minecraft
CR, but it would be a predefined configuration that we know works well.
Should validate that deployed servers in the network are compatible, and expose compatibility issues in the status
That seems like a stretch goal :) , but very cool
Yeah good call
In "Stretch Goals"
Hosting of client-side mods so that users can download the proper mods for a server without needing to track it down online
I'd like to selfishly rank that one even higher; however, this might be a broader concern than the CRDs. It also would require researching leveraging of Twitch/Curse client's ability to load modpacks into the client.
Ah, I use multi-mc which would work quite well if we just hosted an archive, not sure about twitch/curse (we could also link/redirect to the modpage instead of pulling and hosting it)
Roadmap
Please discuss below, this is very much a living document.
Currently there is a single CRD for Minecraft. This should be split into two CRDs,
Minecraft
for server deployment, andMinecraftNetwork
for internal routing/external access.Minecraft
MinecraftNetwork
Packaging
Stretch Goals
Super Stretch Goals That Might Just Be Impossible
Edit: Move server network compatibility check to stretch goals