Configuration Reference
This document provides a comprehensive reference for configuring Minato resources.
GameProfile
A GameProfile defines a reusable game configuration.
Full GameProfile Example
apiVersion: operator.minato.io/v1
kind: GameProfile
metadata:
name: minecraft-paper
spec:
displayName: "Minecraft Paper"
image: "itzg/minecraft-server:latest"
imagePullPolicy: IfNotPresent
ports:
- name: game
containerPort: 25565
protocol: TCP
- name: rcon
containerPort: 25575
protocol: TCP
environment:
- key: EULA
default: "true"
required: true
- key: TYPE
default: "PAPER"
required: false
- key: MEMORY
default: "2G"
required: false
resources:
requests:
cpu: 500m
memory: 2Gi
limits:
cpu: 2
memory: 4Gi
storage:
mountPath: /data
sizeDefault: 20Gi
agent:
image: "harbor.7kgroup.org/7kminato-games/minato-agent-minecraft:v0.1.0"
version: "0.1.0"
actions:
- name: restart
description: "Gracefully restart the server"
concurrency: serialize
timeout: 5m
- name: send-message
description: "Broadcast a message"
params:
message:
type: string
required: true
concurrency: allow
timeout: 30s
capabilities:
files: true
sftp: true
backup: true
restoreFromSnapshot: true
GameProfile Field Reference
| Field |
Type |
Required |
Description |
displayName |
string |
Yes |
Human-friendly name |
image |
string |
Yes |
Game container image |
imagePullPolicy |
string |
No |
Image pull policy (Always/IfNotPresent/Never) |
ports |
[]PortSpec |
No |
Game ports to expose |
environment |
[]EnvironmentSpec |
No |
Configurable environment variables |
resources |
ResourceRequirements |
No |
Default container resources |
storage |
StorageSpec |
Yes |
Persistent storage configuration |
agent |
AgentSpec |
Yes |
Per-game agent configuration |
actions |
[]ActionDecl |
No |
Declared action catalog |
capabilities |
CapabilitiesSpec |
No |
Optional sidecar capabilities |
CapabilitiesSpec
capabilities:
files: true # Filebrowser sidecar
sftp: true # SFTP sidecar
backup: true # Supports backup action
restoreFromSnapshot: true
| Field |
Type |
Required |
Description |
files |
bool |
No |
Inject filebrowser sidecar |
sftp |
bool |
No |
Inject SFTP sidecar |
backup |
bool |
No |
Enable backup action |
restoreFromSnapshot |
bool |
No |
Enable restore from snapshot |
GameProfile Spec Types
PortSpec
ports:
- name: game
containerPort: 25565
protocol: TCP
| Field |
Type |
Required |
Description |
name |
string |
Yes |
Port name |
containerPort |
int32 |
Yes |
Container port |
protocol |
string |
No |
TCP or UDP (default: TCP) |
EnvironmentSpec
environment:
- key: EULA
default: "true"
required: true
| Field |
Type |
Required |
Description |
key |
string |
Yes |
Environment variable name |
default |
string |
No |
Default value |
required |
bool |
No |
Whether user must provide a value |
StorageSpec
storage:
mountPath: /data
sizeDefault: 20Gi
| Field |
Type |
Required |
Description |
mountPath |
string |
Yes |
Volume mount path |
sizeDefault |
string |
Yes |
Default PVC size |
AgentSpec
agent:
image: "harbor.7kgroup.org/7kminato-games/minato-agent-minecraft:v0.1.0"
version: "0.1.0"
| Field |
Type |
Required |
Description |
image |
string |
Yes |
Agent container image |
version |
string |
Yes |
Agent version for compatibility |
ActionDecl
actions:
- name: restart
description: "Restart the server"
params:
delay:
type: int
required: false
default: "0"
concurrency: serialize
timeout: 5m
| Field |
Type |
Required |
Description |
name |
string |
Yes |
Action identifier |
description |
string |
No |
Human-readable description |
params |
map[string]ActionParamSchema |
No |
Parameter schema |
concurrency |
string |
No |
allow/serialize/exclusive |
timeout |
string |
No |
Maximum duration |
GameServer
A GameServer represents a single running game server instance.
Full GameServer Example
apiVersion: operator.minato.io/v1
kind: GameServer
metadata:
name: my-server
namespace: default
spec:
profile: minecraft-paper
env:
EULA: "true"
MEMORY: "4G"
lifecycle:
idleTimeoutSeconds: 3600
autoStart: true
GameServer Field Reference
| Field |
Type |
Required |
Description |
profile |
string |
Yes |
GameProfile name |
env |
map[string]string |
No |
Environment overrides |
lifecycle |
LifecycleSpec |
No |
Lifecycle settings |
LifecycleSpec
lifecycle:
idleTimeoutSeconds: 3600 # 0 = never auto-shutdown
autoStart: true
| Field |
Type |
Required |
Description |
idleTimeoutSeconds |
int32 |
No |
Auto-shutdown timeout (0 = disabled) |
autoStart |
bool |
No |
Start automatically on creation |
GameServerFleet
A GameServerFleet manages multiple GameServers of the same profile.
Full GameServerFleet Example
apiVersion: operator.minato.io/v1
kind: GameServerFleet
metadata:
name: production-fleet
namespace: default
spec:
profile: minecraft-paper
replicas: 5
template:
metadata:
labels:
tier: production
spec:
env:
EULA: "true"
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
GameServerFleet Field Reference
| Field |
Type |
Required |
Description |
profile |
string |
Yes |
GameProfile name |
replicas |
int32 |
Yes |
Number of GameServers |
template |
GameServerTemplateSpec |
No |
Template for created GameServers |
updateStrategy |
UpdateStrategy |
No |
Update strategy |
UpdateStrategy
| Field |
Type |
Required |
Description |
type |
string |
No |
RollingUpdate or OnDelete |
rollingUpdate |
RollingUpdateConfig |
No |
Rolling update parameters |
ActionExecution
An ActionExecution dispatches an action to a game server.
ActionExecution Example
apiVersion: operator.minato.io/v1
kind: ActionExecution
metadata:
name: restart-action
namespace: default
spec:
targetRef:
apiVersion: operator.minato.io/v1
kind: GameServer
name: my-server
actionName: restart
params:
delay: "10"
caller: "admin"
ActionExecution Field Reference
| Field |
Type |
Required |
Description |
targetRef |
TargetRef |
Yes |
Target GameServer or Fleet |
actionName |
string |
Yes |
Action to execute |
params |
map[string]string |
No |
Action parameters |
caller |
string |
No |
Identity that initiated the action |
GameSnapshot
A GameSnapshot manages backups of game server data.
GameSnapshot Example
apiVersion: operator.minato.io/v1
kind: GameSnapshot
metadata:
name: daily-backup
namespace: default
spec:
gameServerRef: my-server
schedule: "0 2 * * *"
retention:
count: 7
duration: "168h"
GameSnapshot Field Reference
| Field |
Type |
Required |
Description |
gameServerRef |
string |
Yes |
GameServer name |
schedule |
string |
No |
Cron expression for periodic snapshots |
retention |
SnapshotRetention |
No |
Retention policy |
SnapshotRetention
| Field |
Type |
Required |
Description |
count |
int |
No |
Maximum number of snapshots |
duration |
string |
No |
Maximum age (e.g., "168h") |
Environment Variables
Operator
| Variable |
Default |
Description |
METRICS_BIND_ADDRESS |
0 |
Metrics endpoint address |
HEALTH_PROBE_BIND_ADDRESS |
:8081 |
Health probe address |
LEADER_ELECT |
true |
Enable leader election |
Agent
| Variable |
Description |
MINATO_GAMESERVER_NAME |
GameServer name |
MINATO_GAMESERVER_NAMESPACE |
GameServer namespace |
MINATO_GAME_CONTAINER |
Game container name |
RCON_HOST |
RCON server host |
RCON_PORT |
RCON server port |
RCON_PASSWORD |
RCON password |
Control Plane
| Variable |
Default |
Description |
PORT |
8080 |
HTTP server port |
Common Configurations
Minecraft Paper
apiVersion: operator.minato.io/v1
kind: GameProfile
metadata:
name: minecraft-paper
spec:
displayName: "Minecraft Paper"
image: "itzg/minecraft-server:latest"
ports:
- name: game
containerPort: 25565
- name: rcon
containerPort: 25575
environment:
- key: EULA
default: "true"
required: true
- key: TYPE
default: "PAPER"
- key: VERSION
default: "1.20.4"
- key: MEMORY
default: "2G"
- key: ENABLE_RCON
default: "true"
- key: RCON_PORT
default: "25575"
- key: RCON_PASSWORD
default: "minato-rcon"
storage:
mountPath: /data
sizeDefault: 20Gi
agent:
image: "harbor.7kgroup.org/7kminato-games/minato-agent-minecraft:v0.1.0"
version: "0.1.0"
Counter-Strike 2
apiVersion: operator.minato.io/v1
kind: GameProfile
metadata:
name: cs2
spec:
displayName: "Counter-Strike 2"
image: "cm2network/cs2:latest"
ports:
- name: game
containerPort: 27015
protocol: UDP
- name: rcon
containerPort: 27015
protocol: TCP
environment:
- key: SRCDS_TOKEN
required: true
- key: SRCDS_RCONPW
required: true
storage:
mountPath: /home/steam/cs2-dedicated
sizeDefault: 50Gi
agent:
image: "harbor.7kgroup.org/7kminato-games/minato-agent-cs2:v0.1.0"
version: "0.1.0"
Palworld
apiVersion: operator.minato.io/v1
kind: GameProfile
metadata:
name: palworld
spec:
displayName: "Palworld"
image: "thijsvanloef/palworld-server-docker:latest"
ports:
- name: game
containerPort: 8211
protocol: UDP
- name: rcon
containerPort: 25575
protocol: TCP
environment:
- key: PLAYERS
default: "32"
- key: PORT
default: "8211"
- key: RCON_ENABLED
default: "true"
- key: RCON_PORT
default: "25575"
storage:
mountPath: /palworld
sizeDefault: 20Gi
agent:
image: "harbor.7kgroup.org/7kminato-games/minato-agent-palworld:v0.1.0"
version: "0.1.0"