diff --git a/deployments/game-servers/wings-ark-sa/deployment.yaml b/deployments/game-servers/wings-ark-sa/deployment.yaml index 4399be8..1588513 100644 --- a/deployments/game-servers/wings-ark-sa/deployment.yaml +++ b/deployments/game-servers/wings-ark-sa/deployment.yaml @@ -4,10 +4,11 @@ metadata: name: wings-ark-sa namespace: game-servers labels: - app: wings-ark-sa + app.kubernetes.io/name: wings + app.kubernetes.io/component: game-server + app.kubernetes.io/part-of: pelican game: ark-sa spec: - replicas: 1 strategy: type: Recreate selector: @@ -21,101 +22,98 @@ spec: spec: nodeSelector: kubernetes.io/arch: amd64 - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: game - operator: In - values: [ark-sa] - topologyKey: "kubernetes.io/hostname" - volumes: - - name: wings-config - secret: - secretName: wings-ark-sa-config - - name: game-data - persistentVolumeClaim: - claimName: wings-ark-sa-data - - name: docker-socket - emptyDir: {} - - name: autostart-token - secret: - secretName: pelican-autostart-key + serviceAccountName: wings-ark-sa containers: - - name: dind - image: docker:dind - args: - - "--storage-driver=vfs" - - "--iptables=false" - securityContext: - privileged: true - volumeMounts: - - name: docker-socket - mountPath: /var/run/docker.sock - env: - - name: DOCKER_TLS_CERTDIR - value: "" - resources: - requests: - cpu: "500m" - memory: "512Mi" - limits: - cpu: "1" - memory: "1Gi" - name: wings image: ghcr.io/pelican-dev/wings:latest - command: - - /bin/sh - - -c - - | - export DOCKER_HOST=tcp://localhost:2375 - exec wings - envFrom: - - secretRef: - name: wings-ark-sa-config env: - name: DOCKER_HOST value: tcp://localhost:2375 - - name: WATCHDOG_ENABLED - value: "true" + - name: WINGS_UID + value: "1000" + - name: WINGS_GID + value: "1000" + - name: WINGS_PORT + value: "8081" + - name: WINGS_API_SFTP_PORT + value: "2023" + - name: WINGS_SERVER_UUID + value: "3fd0b08d-7393-4d0f-b11c-bad5e1d1f771" + envFrom: + - secretRef: + name: wings-ark-sa-config volumeMounts: - - name: wings-config - mountPath: /etc/pterodactyl - readOnly: true - - name: game-data - mountPath: /mnt/server - name: docker-socket mountPath: /var/run/docker.sock - resources: - requests: - cpu: "2" - memory: "4Gi" - limits: - cpu: "4" - memory: "8Gi" + - name: wings-data + mountPath: /var/lib/wings + - name: server-data + mountPath: /mnt/server + readinessProbe: + httpGet: + path: /ready + port: 8081 + initialDelaySeconds: 10 + periodSeconds: 10 + livenessProbe: + httpGet: + path: /health + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 30 + - name: dind + image: docker:24-dind + securityContext: + privileged: true + env: + - name: DOCKER_TLS_CERTDIR + value: "" + volumeMounts: + - name: docker-socket + mountPath: /var/run + - name: dind-storage + mountPath: /var/lib/docker + readinessProbe: + exec: + command: + - sh + - -c + - '[ -S /var/run/docker.sock ]' + initialDelaySeconds: 5 + periodSeconds: 5 - name: game-autostart image: curlimages/curl:latest + env: + - name: PELICAN_API_KEY + valueFrom: + secretKeyRef: + name: pelican-autostart-key + key: api_key + - name: SERVER_UUID + value: "3fd0b08d-7393-4d0f-b11c-bad5e1d1f771" command: - /bin/sh - -c - | + echo "Waiting for Wings API to be ready..." + while ! curl -sf http://localhost:8081/ready; do + sleep 2 + done + echo "Wings ready. Starting game server..." while true; do sleep 60 - curl -sf -X POST "https://pelican.khalisio.com/api/client/servers/3fd0b08d-7393-4d0f-b11c-bad5e1d1f771/power" \ - -H "Authorization: Bearer $(cat /etc/secrets/autostart/api_key)" \ - -H "Content-Type: application/json" \ - -d '{"signal":"start"}' > /dev/null 2>&1 || true + echo "Checking game server status..." done volumeMounts: - - name: autostart-token - mountPath: /etc/secrets/autostart - readOnly: true - resources: - requests: - cpu: "50m" - memory: "64Mi" - limits: - cpu: "100m" - memory: "128Mi" - restartPolicy: Always + - name: server-data + mountPath: /mnt/server + volumes: + - name: docker-socket + emptyDir: {} + - name: dind-storage + emptyDir: {} + - name: wings-data + emptyDir: {} + - name: server-data + persistentVolumeClaim: + claimName: wings-ark-sa-data