Repository navigation
Expand file tree
/
Copy pathmc-server.yml
More file actions
75 lines (72 loc) · 3.28 KB
/
Copy pathmc-server.yml
File metadata and controls
75 lines (72 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
apiVersion: 'agones.dev/v1'
kind: GameServer
metadata:
annotations:
external-dns.alpha.kubernetes.io/hostname: saulmaldonado.me.
external-dns.alpha.kubernetes.io/gameserver-service: minecraft
generateName: 'mc-server-' # Generates a unique name for GameServer and Pod
spec:
container: mc-server # Minecraft server container name
ports:
- name: mc
# "Dynamic" (default) the system allocates a free hostPort for the gameserver (default 7000-8000), for game clients to connect to
portPolicy: Dynamic
# The name of the container to open the port on. Defaults to the game server container if omitted or empty.
container: mc-server
# the port that is being opened on the game server process
containerPort: 25565
# Minecraft uses TCP to connect players
protocol: TCP
# Health checking for the running game server
health:
# Number of seconds after the container has started before health check is initiated.
initialDelaySeconds: 60
# If the `Health()` function doesn't get called at least once every period (seconds), then
# the game server is not healthy.
periodSeconds: 12
# Minimum consecutive failures for the health probe to be considered failed after having succeeded.
failureThreshold: 5
template:
spec:
containers:
- name: mc-server
image: itzg/minecraft-server # Minecraft Java server image
env: # Full list of ENV variables at https://github.com/itzg/docker-minecraft-server
- name: EULA
value: "TRUE"
volumeMounts:
- mountPath: /data # shared vol with mc-load and mc-backup
name: world-vol
ports:
- containerPort: 25575 # exposes the RCON port to within the cluster from the pod's IP
- name: mc-monitor
image: saulmaldonado/agones-mc # monitor
args:
- monitor
- --attempts=5 # matches spec.health.failureThreshold
- --initial-delay=60s # matches spec.health.initialDelaySeconds
- --interval=10s # below spec.health.periodSecond
- --timeout=10s # matches interval
imagePullPolicy: Always
- name: mc-backup
image: saulmaldonado/agones-mc # backup
args:
- backup
- --gcp-bucket-name=agones-minecraft-mc-worlds # GCP Cloud storage bucket name for world archives
- --backup-cron=0 */6 * * * # crontab for recurring backups. omiting flag will only run backup once
- --initial-delay=60s # delay for mc-server to build world before scheduling backup jobs
env:
- name: NAME
valueFrom:
fieldRef:
fieldPath: metadata.name # GameServer ref for naming backup zip files
- name: RCON_PASSWORD
value: minecraft # default rcon password. If provided RCON connection will be used to execute 'save-all' before a backup job.
# Change the rcon password when exposing RCON port outside the pod
imagePullPolicy: Always
volumeMounts:
- mountPath: /data # shared vol with mc-server
name: world-vol
volumes:
- name: world-vol # shared vol between containers. will not persist bewteen restarts
emptyDir: {}