Guide du Helm Chart Minecraft Kubernetes
Aperçu
Ce document explique tous les composants du Helm chart utilisés pour déployer un serveur Minecraft Java Edition sur Kubernetes avec du stockage monté sur l'hôte et le support RCON.
Structure du Chart
minecraft-server/
├─ chart.yaml
├─ values.yaml
└─ templates/
├─ deployment.yaml
├─ service.yaml
├─ pv.yaml
└─ pvc.yaml
- Chart.yaml
- values.yaml
- deployment.yaml
- service.yaml
- pv.yaml
chart.yaml
Ce fichier définit les métadonnées du Helm chart :
apiVersion: v2
name: minecraft-server
version: 0.1.0
description: Minecraft Java Server on Kubernetes
values.yaml
Ce fichier contient toutes les valeurs configurables utilisées dans le chart.
Pour l'instant, le rcon se lie à .10 et non à .190 ; je ne sais pas encore pourquoi.
Champs importants :
image:
repository: eclipse-temurin
tag: latest
pullPolicy: IfNotPresent
minecraft:
memoryMax: 15G
memoryMin: 8G
jarFile: server.jar
rconPassword: "SuperSecret123"
service:
type: NodePort
port: 25565
nodePort: 32565
bindIP: 192.168.2.10
rconBindIP: 192.168.2.190
rconPort: 25575
persistence:
hostPath: /mnt/DATA/minecraft
Explication du Deployment
Le Deployment exécute le serveur Minecraft et monte votre répertoire hôte :
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: minecraft-server
spec:
replicas: 1
selector:
matchLabels:
app: minecraft-server
template:
metadata:
labels:
app: minecraft-server
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: minecraft
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
workingDir: /data
command: ["java"]
args: ["-Xmx{{ .Values.minecraft.memoryMax }}", "-Xms{{ .Values.minecraft.memoryMin }}",
"-jar", "{{ .Values.minecraft.jarFile }}", "nogui"]
volumeMounts:
- name: minecraft-data
mountPath: /data
volumes:
- name: minecraft-data
hostPath:
path: {{ .Values.persistence.hostPath }}
Objectif :
hostNetwork: truelie Minecraft directement aux IPs de l'hôte./mnt/DATA/minecraftsur l'hôte est mappé à/datadans le conteneur.- Le serveur Minecraft lit et écrit les fichiers directement dans le répertoire hôte.
server.jardoit exister dans/mnt/DATA/minecraft.
Explication du Service
service.yaml
apiVersion: v1
kind: Service
metadata:
name: minecraft-service
spec:
type: {{ .Values.service.type }}
selector:
app: minecraft-server
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.port }}
nodePort: {{ .Values.service.nodePort }}
Objectif :
- Expose Minecraft au réseau via NodePort.
- Puisque
hostNetwork: true, le serveur se lie également directement à l'IP de l'hôte.
Configuration du stockage
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
hostPath:
path: {{ .Values.persistence.hostPath }}
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minecraft-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
Comment déployer
1. Préparer le répertoire hôte
sudo mkdir -p /mnt/DATA/minecraft
sudo chmod -R 777 /mnt/DATA/minecraft
2. Ajoutez votre JAR du serveur Minecraft
Placez votre server.jar dans :
/mnt/DATA/minecraft/server.jar
3. Installer le Helm Chart
helm install mc ./minecraft-server -n minecraft --create-namespace
4. Vérifier le déploiement
kubectl get pods -n minecraft
kubectl logs -f deployment/minecraft-server -n minecraft
5. Modifier server.properties
Exemple :
enable-rcon=true
rcon.port=25575
rcon.password=SuperSecret123
rcon.ip=192.168.2.190
server-ip=192.168.2.10
server-port=25565
Enregistrez-le dans :
/mnt/DATA/minecraft/server.properties
6. Se connecter au serveur
Utilisez :
192.168.2.10:25565
7. Accès RCON
192.168.2.190:25575 mot de passe : SuperSecret123