--- apiVersion: apps/v1 kind: StatefulSet metadata: name: minecraft-server namespace: minecraft spec: selector: matchLabels: app: minecraft-server template: metadata: labels: app: minecraft-server spec: containers: - name: minecraft-server image: itzg/minecraft-server:latest # Or specific version if needed env: - name: EULA value: "TRUE" - name: MODE value: "survival" - name: TYPE value: "CURSEFORGE" - name: INIT_MEMORY value: 1G - name: MAX_MEMORY value: 4G - name: CF_SERVER_MOD value: "/modpacks/your-modpack.zip" - name: ALLOW_FLIGHT value: "TRUE" - name: USE_AIKAR_FLAGS value: "TRUE" - name: RCON_PASSWORD value: "rcon-password" ports: - name: minecraft containerPort: 25565 # Expose port 25565 - name: minecraft-rcon containerPort: 25575 - name: metrics containerPort: 19565 resources: requests: cpu: 1 #4 # Adjust based on expected workload memory: "1Gi" #"12Gi" # Adjust based on expected workload limits: cpu: 2 #8 # Adjust based on expected workload memory: "4Gi" #"16Gi" # Adjust based on expected workload readinessProbe: exec: command: - mcstatus - 127.0.0.1 - ping initialDelaySeconds: 30 periodSeconds: 30 livenessProbe: exec: command: - mcstatus - 127.0.0.1 - ping initialDelaySeconds: 30 periodSeconds: 30 volumeMounts: - name: minecraft-data mountPath: /data volumes: - name: minecraft-data persistentVolumeClaim: claimName: minecraft-data