feat(satisfactory): added chart

This commit is contained in:
jklein committed 2026-03-16 21:21:07 +01:00
1 parent 952088b3fb
commit 367d9e3900
6 files changed
+158

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
+8
View File
@@ -0,0 +1,8 @@
apiVersion: v2
name: satisfactory
description: A Helm chart to deploy a Satisfactory Gameserver on Kubernetes
type: application
version: 1.2.0+upv1.9.10
appVersion: "v1.9.10"
maintainers:
- name: jklein
@@ -0,0 +1,78 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-server"
spec:
selector:
matchLabels:
app: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-server"
serviceName: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-service"
replicas: 1
template:
metadata:
labels:
app: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-server"
spec:
automountServiceAccountToken: false
containers:
- name: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-server"
image: "ghcr.io/wolveix/satisfactory-server:{{ .Chart.AppVersion }}"
env:
- name: DEBUG
value: "{{ .Values.dev.debug }}"
- name: MAXPLAYERS
value: "{{ .Values.game.maxPlayers }}"
- name: PGID
value: "1000"
- name: PUID
value: "1000"
- name: SKIPUPDATE
value: "false"
- name: STEAMBETA
value: "{{ .Values.game.experimental }}"
- name: DISABLESEASONALEVENTS
value: "{{ .Values.game.seasonalEvents }}"
- name: SERVERGAMEPORT
value: "{{ .Values.server.gamePort }}"
- name: SERVERMESSAGINGPORT
value: "{{ .Values.server.messagingPort }}"
ports:
- name: "api"
containerPort: {{ .Values.server.gamePort }}
protocol: TCP
- name: "game"
containerPort: {{ .Values.server.gamePort }}
protocol: UDP
- name: "messaging"
containerPort: {{ .Values.server.messagingPort }}
protocol: TCP
livenessProbe:
exec:
command:
- "/bin/sh"
- "-c"
- "/home/steam/healthcheck.sh"
initialDelaySeconds: 300
failureThreshold: 4
successThreshold: 1
periodSeconds: 30
resources:
requests:
memory: "4Gi"
cpu: "1"
ephemeral-storage: "5Gi"
limits:
memory: "8Gi"
cpu: "2"
ephemeral-storage: "10Gi"
volumeMounts:
- name: satisfactory-volume
mountPath: /config
subPath: config/
- name: satisfactory-volume
mountPath: /config/gamefiles
subPath: gameFiles/
volumes:
- name: satisfactory-volume
persistentVolumeClaim:
claimName: {{ .Release.Name }}-{{ .Chart.Name }}-vc
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}-vc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.server.storage }}
storageClassName: longhorn
@@ -0,0 +1,26 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-service"
labels:
app: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-service"
spec:
type: NodePort
ports:
- name: "api"
port: {{ .Values.server.gamePort }}
protocol: TCP
nodePort: {{ .Values.server.gamePort }}
targetPort: {{ .Values.server.gamePort }}
- name: "game"
port: {{ .Values.server.gamePort }}
protocol: UDP
nodePort: {{ .Values.server.gamePort }}
targetPort: {{ .Values.server.gamePort }}
- name: "messaging"
port: {{ .Values.server.messagingPort }}
protocol: TCP
nodePort: {{ .Values.server.messagingPort }}
targetPort: {{ .Values.server.messagingPort }}
selector:
app: "{{ .Release.Name }}-{{ .Chart.Name }}-sf-server"
+12
View File
@@ -0,0 +1,12 @@
dev:
debug: false
game:
experimental: false
maxPlayers: 4
seasonalEvents: true
server:
gamePort: 30777
messagingPort: 30888
storage: 20Gi