-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmc-server-fleet.yml
101 lines (98 loc) · 4.04 KB
/
mc-server-fleet.yml
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
apiVersion: "agones.dev/v1"
kind: Fleet
metadata:
name: mc
spec:
# the number of GameServers to keep Ready or Allocated in this Fleet
replicas: 5
# defines how GameServers are organised across the cluster.
# "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack
# resources
scheduling: Packed
strategy:
# "Recreate" terminates all non-allocated GameServers, and starts up a new set with the new details to replace them.
type: Recreate
template:
# GameServer metadata
metadata:
labels:
# GameServer lablel to match with GameServerAllocation
game: mc
edition: java
annotations:
external-dns.alpha.kubernetes.io/hostname: <DOMAIN>
external-dns.alpha.kubernetes.io/gameserver-service: minecraft
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: 300
# 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
env:
- name: INITIAL_DELAY
value: "30s"
- name: MAX_ATTEMPTS
value: "5"
- name: INTERVAL
value: "10s"
- name: TIMEOUT
value: "10s"
imagePullPolicy: Always
- name: mc-backup
image: saulmaldonado/agones-mc # backup
args:
- backup
env:
- name: BUCKET_NAME
value: "agones-minecraft-mc-worlds"
- name: BACKUP_CRON
value: "0 */6 * * *"
- name: INITIAL_DELAY
value: "60s"
- name: VOLUME
value: "/data"
- name: POD_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