Files
enigma/deployment.yaml
capitano 3089316a25
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Update Enigma BBS deployment
2026-04-07 16:35:44 +02:00

179 lines
5.4 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: enigmabbs
namespace: enigmabbs
spec:
replicas: 1
selector:
matchLabels:
app: enigmabbs
template:
metadata:
labels:
app: enigmabbs
spec:
initContainers:
- name: init-check
image: busybox:latest
command: ["/bin/sh", "-c"]
args:
- |
echo "Checking for existing processes on port 8888..."
netstat -tlnp 2>/dev/null | grep 8888 || echo "Port 8888 is free"
- name: init-config
image: enigmabbs/enigma-bbs:latest
command: ["/bin/sh", "-c"]
args:
- |
set -e
echo "Creating directories..."
mkdir -p /enigma-bbs/config/security
mkdir -p /enigma-bbs/config/menus
mkdir -p /enigma-bbs/db
mkdir -p /enigma-bbs/filebase
echo "Copying SSH key from secret..."
cp /enigma-ssh-key/ssh_private_key.pem /enigma-bbs/config/security/ssh_private_key.pem
chmod 600 /enigma-bbs/config/security/ssh_private_key.pem
echo "Creating config.hjson..."
cat > /enigma-bbs/config/config.hjson << 'EOF'
{
system: {
bbsName: "Enigma BBS"
bbsTimeZone: "America/New_York"
bbsNodeNumber: 1
domain: "enigma.giaco.net"
}
loginServers: {
telnet: {
enabled: true
port: 8888
}
ssh: {
enabled: true
port: 44511
privateKeyPem: "/enigma-bbs/config/security/ssh_private_key.pem"
privateKeyPass: ""
}
}
contentServers: {
web: {
domain: "enigma.giaco.net"
http: {
enabled: true
port: 8888
}
}
}
security: {
secureLoginOnly: false
requireSecureConnections: false
}
}
EOF
echo "Creating achievements.hjson..."
cat > /enigma-bbs/config/achievements.hjson << 'EOF'
{
systemAchievements: {
}
}
EOF
echo "Creating menu.hjson..."
cat > /enigma-bbs/config/menu.hjson << 'EOF'
{
menus: {
someMenu: {
}
}
}
EOF
echo "Init completed"
volumeMounts:
- name: enigmabbs-config
mountPath: /enigma-bbs/config
- name: enigmabbs-data
mountPath: /enigma-bbs/db
- name: enigmabbs-art
mountPath: /enigma-bbs/art
- name: enigmabbs-mods
mountPath: /enigma-bbs/mods
- name: enigmabbs-ssh-key-volume
mountPath: /enigma-ssh-key
readOnly: true
containers:
- name: enigmabbs
image: enigmabbs/enigma-bbs:latest
imagePullPolicy: Always
command: ["/bin/sh", "-c"]
args:
- |
set -e
echo "Killing any existing pm2 processes..."
pm2 delete all || true
pm2 kill || true
sleep 2
echo "Starting Enigma BBS..."
exec pm2-runtime main.js
ports:
- containerPort: 8888
name: web
- containerPort: 44510
name: telnet
- containerPort: 44511
name: ssh
env:
- name: NODE_ENV
value: "production"
volumeMounts:
- name: enigmabbs-data
mountPath: /enigma-bbs/db
- name: enigmabbs-art
mountPath: /enigma-bbs/art
- name: enigmabbs-config
mountPath: /enigma-bbs/config
- name: enigmabbs-mods
mountPath: /enigma-bbs/mods
- name: enigmabbs-logs
mountPath: /enigma-bbs/logs
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1000m"
readinessProbe:
tcpSocket:
port: 8888
initialDelaySeconds: 90
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
livenessProbe:
tcpSocket:
port: 8888
initialDelaySeconds: 180
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 3
volumes:
- name: enigmabbs-data
persistentVolumeClaim:
claimName: enigmabbs-data
- name: enigmabbs-art
persistentVolumeClaim:
claimName: enigmabbs-art
- name: enigmabbs-config
emptyDir: {}
- name: enigmabbs-ssh-key-volume
secret:
secretName: enigmabbs-ssh-key
- name: enigmabbs-mods
persistentVolumeClaim:
claimName: enigmabbs-mods
- name: enigmabbs-logs
emptyDir: {}