Kubernetes - OpenRCT2
Had to do hacky work-arounds using the configmaps since they are read-only and I didn't want a separate config.ini file
kind: ConfigMap
apiVersion: v1
metadata:
name: openrct2-config
data:
config.ini: |
[general]
show_fps = true
currency_format = USD
date_format = MM/DD/YY
language = en-US
temperature_format = FAHRENHEIT
measurement_format = IMPERIAL
auto_open_shops = true
show_guest_purchases = true
[network]
player_name = "Player"
advertise = true
default_port = 11753
maxplayers = 8
server_name = "Kubernetes Playground"
server_description = "Kubernetes Hosted"
server_greeting = "Welcome!"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: openrct2
labels:
app: openrct2
spec:
replicas: 1
selector:
matchLabels:
app: openrct2
template:
metadata:
labels:
app: openrct2
spec:
containers:
- name: openrct2
image: openrct2/openrct2-cli:0.2.4
readinessProbe:
tcpSocket:
port: 11753
initialDelaySeconds: 5
periodSeconds: 10
args: ["host", "/home/openrct2/.config/OpenRCT2/save/oxbrowlake.sv6", "--headless"]
volumeMounts:
- name: save-data
mountPath: /home/openrct2/.config/OpenRCT2/save
- name: openrct2-conf
mountPath: /home/openrct2/.config/OpenRCT2/config.ini
subPath: config.ini
resources:
limits:
memory: 512Mi
requests:
memory: 256Mi
ports:
- containerPort: 11753
initContainers:
- name: dlpark
image: busybox
command: ["wget", "-O", "/work/oxbrowlake.sv6", "https://downloads.rctgo.com/scenarios/2017-10/17352/Oxbrow Lake Park.sc6"]
volumeMounts:
- name: save-data
mountPath: /work
- name: permissions
image: busybox
command: ["sh", "-c", "cp /conf/config.ini /work/config.ini; chown 1000:1000 /work/config.ini"]
volumeMounts:
- name: openrct2-conf
mountPath: /work
- name: openrct2-config
mountPath: /conf/config.ini
subPath: config.ini
volumes:
- name: save-data
emptyDir: {}
- name: openrct2-conf
emptyDir: {}
- name: openrct2-config
configMap:
name: openrct2-config
---
apiVersion: v1
kind: Service
metadata:
name: openrct2
spec:
selector:
app: openrct2
ports:
- protocol: TCP
port: 11753
targetPort: 11753
type: LoadBalancer