apiVersion: apps/v1 kind: StatefulSet metadata: name: tfg namespace: minecraft labels: app.kubernetes.io/name: tfg spec: selector: matchLabels: app.kubernetes.io/name: tfg replicas: 1 template: metadata: namespace: minecraft labels: app.kubernetes.io/name: tfg containertype: minecraft-server spec: containers: - name: tfg image: itzg/minecraft-server:java21-graalvm env: # Let jvm figure out memory based on limits - name: MEMORY value: "" - name: JVM_XX_OPTS value: "-XX:MaxRAMPercentage=75" - name: ALLOW_FLIGHT value: "true" - name: CF_API_KEY value: $2a$10$GE.ruAAiogu1Zq2/oyPhzuGgFkXxID2ofiIXtnehJlS98/sK6J.Ya - name: CF_FILE_ID value: "6123835" - name: CF_OVERRIDES_EXCLUSIONS value: | shaderpacks/** - name: CF_PARALLEL_DOWNLOADS value: "1" - name: CF_SLUG value: terrafirmagreg-modern - name: EULA value: "TRUE" - name: MAX_TICK_TIME value: "-1" - name: MOD_PLATFORM value: AUTO_CURSEFORGE - name: ONLINE_MODE value: "false" - name: OVERRIDE_SERVER_PROPERTIES value: "true" - name: SPAWN_PROTECTION value: "0" - name: OPS value: | RoyalCat33 RoyalCat20 Zoryka ports: - containerPort: 25565 protocol: TCP resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "4" memory: "10Gi" readinessProbe: exec: command: ["/usr/local/bin/mc-monitor", "status", "--host", "localhost"] # Give it i + p * f seconds to be ready, so 120 seconds initialDelaySeconds: 20 periodSeconds: 5 failureThreshold: 20 # Monitor ongoing liveness livenessProbe: exec: command: ["/usr/local/bin/mc-monitor", "status", "--host", "localhost"] initialDelaySeconds: 120 periodSeconds: 60 volumeMounts: - mountPath: /data name: tfg-data volumes: - name: tfg-data persistentVolumeClaim: claimName: tfg-data