Files
cluster-state/apps/rimworld-together.yaml
2026-05-01 10:34:25 +02:00

83 lines
2.0 KiB
YAML

---
# 1. NAMESPACE
apiVersion: v1
kind: Namespace
metadata:
name: rimworld
---
# 2. SERVICE (MetalLB Integration)
apiVersion: v1
kind: Service
metadata:
name: rimworld-together-hub
namespace: rimworld
annotations:
# Optional: Falls du eine feste IP aus deinem Pool willst, hier eintragen:
# metallb.universe.tf/loadBalancerIPs: 192.168.x.x
metallb.universe.tf/allow-shared-ip: "rimworld-hub"
spec:
type: LoadBalancer
selector:
app: rimworld-together
ports:
- protocol: TCP
port: 9050
targetPort: 9050
---
# 3. STATEFULSET (Die App-Logik)
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rimworld-together
namespace: rimworld
spec:
serviceName: "rimworld-together-hub"
replicas: 1
selector:
matchLabels:
app: rimworld-together
template:
metadata:
labels:
app: rimworld-together
spec:
# NODE AFFINITY: Damit der Pod auf deinem Gaming-Node landet
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: workload
operator: In
values:
- Games
containers:
- name: hub
image: ghcr.io/rimworldtogether/rimworld-together:latest
imagePullPolicy: Always
resources:
# Optimierte Limits für Talos
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 1000m
memory: 2Gi
ports:
- containerPort: 9050
name: hub-port
volumeMounts:
- name: storage
mountPath: /app/Data
# AUTOMATISCHES PVC (Wird von Argo CD verwaltet)
volumeClaimTemplates:
- metadata:
name: storage
spec:
accessModes: [ "ReadWriteOnce" ]
# Falls du eine spezielle StorageClass hast (z.B. longhorn), hier eintragen:
# storageClassName: "longhorn"
resources:
requests:
storage: 2Gi