技術

minecraftの鯖をおうちkubernetesで動かす用のmanifest例

chatagiriです。

minecraftの鯖をオンプレのkubernetes上で動かす為のmanifestファイル例の覚書です。

基本的に自分用。使いたい方が居れば書き換えてご利用下さいな感じでおねがいしま。

PV回り等、環境ごとに書き換えが必要な個所はいくつかありますので、ご自身の環境と照らし合わせて書き換えてご利用してみてください。

以下manifestファイル例

apiVersion: v1
kind: Namespace
metadata:
name: minecraft
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minecraft
namespace: minecraft
spec:
selector:
matchLabels:
app: minecraft
template:
metadata:
labels:
app: minecraft
spec:
# 鯖のデータ保存領域の永続化。PV回り設定してるなら、コメントインの後良しなに書き換えを
#volumes:
#- name: minecraft-volumes
# persistentVolumeClaim:
# claimName: minecraft-pvc
containers:
- name: minecraft
image: itzg/minecraft-server
env:
- name: EULA
value: "TRUE"
- name: OPS
value: "hogehoge" # minecraft内のOP権限持ちのユーザ名をここに
- name: LEVEL
value: "1.18.1" # 作りたいminecraft鯖のバージョンをここに
- name: MOTD
value: "あああああ" # minecraft内のサーバリストの所に出るサーバ説明
- name: TZ
value: "Asia/Tokyo"
- name: SERVER_NAME
value: "minecraft.example.com" # サーバのドメイン名
- name: MEMORY
value: "4G" # 割り当てるメモリ。resourcelimitと同じ値にしておくこと
- name: SPAWN_PROTECTION
value: "0"
- name: SEED
value: '3427891657823464'
resources:
limits:
memory: "4Gi" # worker node内で割り当ててもらうメモリの上限。worker nodeに積んでる以上のメモリサイズを指定するとoomで死ぬので注意
ports:
- containerPort: 25565 # コンテナ側で開けてるポートの明示
# 鯖のデータ保存領域の永続化。PV回り設定してるなら良しなに書き換えを
# volumeMounts:
# - name: minecraft-volumes
# mountPath: "/data"
---
apiVersion: v1
kind: Service
metadata:
name: minecraft
namespace: minecraft
labels:
app: minecraft
spec:
ports:
- name: minecraft-port
port: 25565
protocol: TCP
targetPort: 25565
# selectorはmetallb入れてるならLoadBalancer, それ以外はNodePortを推奨
selector:
app: minecraft
type: NodePort
# type: LoadBalancer
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: minecraft
namespace: minecraft
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: minecraft.example.com # インターネット側からアクセスされる時のドメイン名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: minecraft
port:
number: 25565 # deploymentとserviceに書いたコンテナ側portを指定すること
---
# 以下pvcは同環境次第で変わるのでよしなに書き換えること
# apiVersion: v1
# kind: PersistentVolumeClaim
# metadata:
# name: minecraft-pvc
# namespace: minecraft
# labels:
# app: minecraft
# spec:
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 3Gi

-技術

S