179 lines
5.4 KiB
YAML
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: {}
|