first commit
This commit is contained in:
171
README.md
Normal file
171
README.md
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
# Minecraft Server - Biohazard Project Genesis
|
||||||
|
|
||||||
|
Questo progetto contiene i manifest Kubernetes per distribuire un server Minecraft con il modpack **Biohazard Project Genesis** (Fallout-themed).
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- `namespace.yaml` - Crea il namespace `minecraft`
|
||||||
|
- `pvc.yaml` - PersistentVolumeClaim per i dati del mondo (50GB)
|
||||||
|
- `init-configmap.yaml` - ConfigMap per gli script di inizializzazione
|
||||||
|
- `configmap.yaml` - Configurazione del server (server.properties)
|
||||||
|
- `statefulset.yaml` - Deployment del server Minecraft
|
||||||
|
- `service.yaml` - Servizio LoadBalancer per l'accesso esterno
|
||||||
|
- `Dockerfile` - Immagine personalizzata con modpack installato
|
||||||
|
- `server-start.sh` - Script di avvio del server
|
||||||
|
- `values.yaml` - File values per Helm (opzionale)
|
||||||
|
- `deploy.sh` - Script di deployment automatico
|
||||||
|
|
||||||
|
## Prerequisiti
|
||||||
|
|
||||||
|
- Kubernetes cluster con Longhorn storage (storageClassName: `longhorn-fast`)
|
||||||
|
- Docker per buildare l'immagine personalizzata
|
||||||
|
- kubectl configurato per accedere al cluster
|
||||||
|
|
||||||
|
## Configurazione
|
||||||
|
|
||||||
|
### Modpack Details
|
||||||
|
- **Modpack ID**: 1082278
|
||||||
|
- **Nome**: Biohazard Project Genesis
|
||||||
|
- **Minecraft Version**: 1.20.1
|
||||||
|
- **Modloader**: Forge
|
||||||
|
- **File ID**: da autenticare via API CurseForge
|
||||||
|
|
||||||
|
### Resource Requirements
|
||||||
|
- **CPU**: 2 core (4 max)
|
||||||
|
- **Memory**: 8GB (4GB min, 8GB max)
|
||||||
|
- **Storage**: 50GB (longhorn-fast)
|
||||||
|
- **Players**: fino a 50
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
### Metodo 1: Manualmente
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create namespace
|
||||||
|
kubectl apply -f namespace.yaml
|
||||||
|
|
||||||
|
# Create PVC
|
||||||
|
kubectl apply -f pvc.yaml
|
||||||
|
|
||||||
|
# Apply ConfigMaps
|
||||||
|
kubectl apply -f init-configmap.yaml
|
||||||
|
kubectl apply -f configmap.yaml
|
||||||
|
|
||||||
|
# Build Docker image
|
||||||
|
docker build -t your-registry/minecraft-biohazard:latest .
|
||||||
|
|
||||||
|
# Update image tag in statefulset.yaml
|
||||||
|
|
||||||
|
# Deploy
|
||||||
|
kubectl apply -f statefulset.yaml
|
||||||
|
kubectl apply -f service.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Metodo 2: Con script
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x deploy.sh
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Monitoraggio
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check pod status
|
||||||
|
kubectl get pods -n minecraft
|
||||||
|
kubectl logs -n minecraft -f <pod-name>
|
||||||
|
|
||||||
|
# Port-forward per accesso locale
|
||||||
|
kubectl port-forward -n minecraft svc/minecraft-service 25565:25565
|
||||||
|
|
||||||
|
# Check logs
|
||||||
|
kubectl logs -n minecraft statefulset/minecraft-server -f
|
||||||
|
```
|
||||||
|
|
||||||
|
## Accesso
|
||||||
|
|
||||||
|
Dopo il deployment, ottenere l'IP del LoadBalancer:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl get svc -n minecraft minecraft-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
|
||||||
|
```
|
||||||
|
|
||||||
|
Connessione in-game: `IP:25565`
|
||||||
|
|
||||||
|
## Configurazione
|
||||||
|
|
||||||
|
### Modificare server.properties
|
||||||
|
|
||||||
|
Modificare il ConfigMap `minecraft-config`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl edit configmap minecraft-config -n minecraft
|
||||||
|
```
|
||||||
|
|
||||||
|
Poi restartare il pod:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl rollout restart statefulset minecraft-server -n minecraft
|
||||||
|
```
|
||||||
|
|
||||||
|
### Aggiungere mods manualmente
|
||||||
|
|
||||||
|
1. Copiare i mods in `/data/mods/` dentro il PVC
|
||||||
|
2. Restartare il server
|
||||||
|
|
||||||
|
## Backup
|
||||||
|
|
||||||
|
Il PVC `minecraft-data` contiene tutto il world data. Per backup:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create snapshot
|
||||||
|
kubectl apply -f trivy-pvc.yaml # usa trivy-pvc.yaml come template
|
||||||
|
|
||||||
|
# O montare il PVC in un pod di backup
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Pod in CrashLoopBackOff
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl logs -n minecraft <pod-name> -f
|
||||||
|
kubectl describe pod -n minecraft <pod-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modpack non installato
|
||||||
|
|
||||||
|
Controllare gli script in `/docker-entrypoint-initd/`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl exec -n minecraft <pod-name> -- ls -la /docker-entrypoint-initd/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modificare resource limits
|
||||||
|
|
||||||
|
Modificare lo StatefulSet:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl edit statefulset minecraft-server -n minecraft
|
||||||
|
```
|
||||||
|
|
||||||
|
## Struttura del PVC
|
||||||
|
|
||||||
|
Dopo il primo avvio, il PVC conterrà:
|
||||||
|
|
||||||
|
```
|
||||||
|
/data/
|
||||||
|
├── server.jar
|
||||||
|
├── mods/
|
||||||
|
├── configs/
|
||||||
|
├── saves/
|
||||||
|
├── logs/
|
||||||
|
└── server.properties
|
||||||
|
```
|
||||||
|
|
||||||
|
## Note
|
||||||
|
|
||||||
|
- Il server scarica il modpack da CurseForge durante il primo avvio
|
||||||
|
- È consigliato impostare `online-mode=false` per evitare problemi di autenticazione
|
||||||
|
- Per produzione, considerare l'uso di un registro Docker privato
|
||||||
|
- Il backup del PVC è fondamentale per preservare il world data
|
||||||
Reference in New Issue
Block a user