This is similar to my minecraft deployment, but instead of a minecraft server it’s a Terraria TShock Server. It goes about the same, there is a yaml file for the following: namespace, PersistentVolumeClaim, Service, and Deployment
Namespace:
kind: Namespace
apiVersion: v1
metadata:
name: tshock1
labels:
name: tshock1
PVC:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: local-hostpath-tshock1-pvc
namespace: tshock1
spec:
storageClassName: openebs-hostpath
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3G
Deployment:
- Note in the Deployment configuration the tty: true
- this is because for some reason tshock was unable to run without a tty session
apiVersion: apps/v1
kind: Deployment
metadata:
name: tshock-server-world1
namespace: tshock1
labels:
app: tshock-server
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: tshock-server
template:
metadata:
labels:
app: tshock-server
spec:
volumes:
- name: tshock1-pv-world0
persistentVolumeClaim:
claimName: local-hostpath-tshock1-pvc
containers:
- name: tshock-server
image: ryshe/terraria:tshock-1.4.3.6-4.5.17-2
tty: true
resources:
limits:
memory: 4Gi
requests:
memory: 2Gi
env:
- name: WORLD_FILENAME
value: world1.wld
ports:
- containerPort: 7777
name: terraria
volumeMounts:
- name: tshock1-pv-world0
mountPath: /root/.local/share/Terraria/Worlds
- name: tshock1-pv-world0
mountPath: /plugins
SVC:
apiVersion: v1
kind: Service
metadata:
name: tshock1-service
namespace: tshock1
spec:
selector:
app: tshock-server
ports:
- protocol: TCP
port: 7777
targetPort: 7777
type: LoadBalancer
loadBalancerIP: 10.0.1.245