apiVersion: apps/v1 kind: Deployment metadata: name: mineclonia namespace: mineclonia spec: replicas: 1 selector: matchLabels: app: mineclonia template: metadata: labels: app: mineclonia spec: initContainers: - name: mineclonia-updater image: alpine command: ["/bin/sh", "-c"] args: - | set -e apk add --no-cache curl unzip jq mkdir -p /var/lib/minetest/.minetest latest_release=$(curl -s https://codeberg.org/api/v1/repos/mineclonia/mineclonia/releases/latest | jq -r '.tag_name') if [ ! -d "/var/lib/minetest/.minetest/games/mineclonia" ] || [ "$(cat /var/lib/minetest/.minetest/games/mineclonia/version.txt)" != "$latest_release" ]; then echo "Updating Mineclonia to version $latest_release" rm -rf /var/lib/minetest/.minetest/games/mineclonia curl -L https://codeberg.org/mineclonia/mineclonia/archive/$latest_release.zip -o /tmp/mineclonia.zip unzip /tmp/mineclonia.zip -d /var/lib/minetest/.minetest/games/ echo "$latest_release" > /var/lib/minetest/.minetest/games/mineclonia/version.txt else echo "Mineclonia is up to date" fi # Ensure ownership of all data chown -R 30000:30000 /var/lib/minetest ls -ahl /var/lib/minetest volumeMounts: - name: data mountPath: /var/lib/minetest containers: - name: mineclonia image: ghcr.io/luanti-org/luanti ports: - containerPort: 30000 protocol: UDP - containerPort: 30000 protocol: TCP volumeMounts: - name: data mountPath: /var/lib/minetest - name: config mountPath: /etc/minetest args: ["minetest", "--gameid", "mineclonia"] stdin: true tty: true volumes: - name: config configMap: name: mineclonia-config - name: data persistentVolumeClaim: claimName: mineclonia-data