Skip to content

Commit 2ac5f8b

Browse files
authored
Add simple kubernetes deployment, add DebugPostgres container (#812)
2 parents a3ff418 + 9e4b716 commit 2ac5f8b

7 files changed

Lines changed: 94 additions & 6 deletions

File tree

.github/workflows/docker.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,20 @@ jobs:
2020
- name: GameServer
2121
dockerfile: Dockerfile
2222
container_id: refresh
23+
build_args: ""
2324
- name: HttpsProxy
2425
dockerfile: HttpsProxy.Dockerfile
2526
container_id: refresh-httpsproxy
27+
build_args: ""
2628
- name: PresenceServer
2729
dockerfile: PresenceServer.Dockerfile
2830
container_id: refresh-presenceserver
31+
build_args: ""
32+
- name: GameServer (DebugPostgres)
33+
dockerfile: Dockerfile
34+
container_id: refresh-postgres-beta
35+
build_args: |
36+
BUILD_CONFIGURATION=DebugPostgres
2937
steps:
3038
- name: Checkout repository
3139
uses: actions/checkout@v4
@@ -40,14 +48,16 @@ jobs:
4048
# See https://github.com/docker/metadata-action#basic
4149
- name: Extract metadata for ${{ matrix.service.name }}
4250
id: meta
43-
uses: docker/metadata-action@v5.6.0
51+
uses: docker/metadata-action@v5.7.0
4452
with:
4553
images: ghcr.io/${{ github.repository_owner }}/${{ matrix.service.container_id }}
4654
- name: Build and push ${{ matrix.service.name }}
47-
uses: docker/build-push-action@v6.15.0
55+
uses: docker/build-push-action@v6.18.0
4856
with:
4957
context: .
5058
file: ${{ matrix.service.dockerfile }}
5159
push: ${{ github.event_name != 'pull_request' }}
5260
tags: ${{ steps.meta.outputs.tags }}
5361
labels: ${{ steps.meta.outputs.labels }}
62+
build-args: |
63+
${{ matrix.service.build_args }}

.idea/.idea.Refresh/.idea/indexLayout.xml

Lines changed: 14 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Dockerfile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Build stage
2+
3+
ARG BUILD_CONFIGURATION=Release
4+
25
FROM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
36
WORKDIR /build
47

@@ -11,11 +14,13 @@ RUN dotnet sln list | grep ".csproj" \
1114
mv $(basename $line) $(dirname $line); \
1215
done;
1316

14-
RUN dotnet restore --use-current-runtime
17+
ARG BUILD_CONFIGURATION=Release
18+
19+
RUN dotnet restore --use-current-runtime /p:Configuration=${BUILD_CONFIGURATION}
1520

1621
COPY . .
1722

18-
RUN dotnet publish Refresh.GameServer -c Release --property:OutputPath=/build/publish/ --no-restore --no-self-contained
23+
RUN dotnet publish Refresh.GameServer -c ${BUILD_CONFIGURATION} --property:OutputPath=/build/publish/ --no-restore --no-self-contained
1924

2025
# Final running container
2126

kube/deployment.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: refresh-gameserver
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: refresh-gameserver
10+
template:
11+
metadata:
12+
labels:
13+
app: refresh-gameserver
14+
spec:
15+
containers:
16+
- name: refresh-gameserver
17+
image: ghcr.io/littlebigrefresh/refresh-postgres-beta:latest
18+
imagePullPolicy: Always
19+
ports:
20+
- containerPort: 10061
21+
env:
22+
- name: BUNKUM_DATA_FOLDER
23+
value: /refresh/data
24+
volumeMounts:
25+
- name: gameserver-data
26+
mountPath: /refresh/data
27+
livenessProbe:
28+
httpGet:
29+
path: /_health
30+
port: 10061
31+
initialDelaySeconds: 10
32+
periodSeconds: 5
33+
timeoutSeconds: 3
34+
failureThreshold: 5
35+
volumes:
36+
- name: gameserver-data
37+
persistentVolumeClaim:
38+
claimName: gameserver-pvc

kube/pvc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: gameserver-pvc
5+
spec:
6+
accessModes:
7+
- ReadWriteOnce
8+
resources:
9+
requests:
10+
storage: 25Gi

kube/service.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: refresh-gameserver
5+
spec:
6+
selector:
7+
app: refresh-gameserver
8+
ports:
9+
- protocol: TCP
10+
port: 10061
11+
targetPort: 10061
12+
type: ClusterIP

scripts/docker-entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/sh
1+
#!/usr/bin/env sh
22

33
# Docker volume mapping messes with folder ownership
44
# so it must be changed again during the entrypoint

0 commit comments

Comments
 (0)