apiVersion: apps/v1 kind: Deployment metadata: name: wings-valheim namespace: game-servers labels: app.kubernetes.io/name: wings app.kubernetes.io/component: game-server app.kubernetes.io/part-of: pelican game: valheim spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: wings-valheim template: metadata: labels: app: wings-valheim game: valheim spec: nodeSelector: kubernetes.io/arch: amd64 volumes: - name: wings-config secret: secretName: wings-valheim-config - name: docker-socket emptyDir: {} - name: dind-storage emptyDir: {} - name: server-data persistentVolumeClaim: claimName: wings-valheim-data - name: autostart-token secret: secretName: pelican-autostart-key containers: - 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 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 env: - name: DOCKER_HOST value: tcp://localhost:2375 - name: WATCHDOG_ENABLED value: "true" volumeMounts: - name: wings-config mountPath: /etc/pterodactyl readOnly: true - name: docker-socket mountPath: /var/run/docker.sock - name: server-data mountPath: /mnt/server resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "4" memory: "8Gi" - name: game-autostart image: curlimages/curl:latest command: - /bin/sh - -c - | while true; do sleep 60 curl -sf -X POST "https://pelican.khalisio.com/api/client/servers/9d09e83d-00c3-4404-8f81-07c0522a6c25/power" \ -H "Authorization: Bearer $(cat /etc/secrets/autostart/api_key)" \ -H "Content-Type: application/json" \ -d '{"signal":"start"}' > /dev/null 2>&1 || true done volumeMounts: - name: autostart-token mountPath: /etc/secrets/autostart readOnly: true resources: requests: cpu: "50m" memory: "64Mi" limits: cpu: "100m" memory: "128Mi"