Agones とは、Kubernetes でゲームサーバーをいい感じに管理できるやつ。
minikube で試す
Kubernetes 自体がでかい概念でむずかしいけど、minikube であればノートPC単体で動かすことができるので、早速やってみた。
Install and configure Agones on Kubernetes | Agones
本当にさくっと試せます。次のコマンド打つだけ。
$ minikube profile agones $ minikube start --kubernetes-version v1.11.0 --vm-driver virtualbox \ --extra-config=apiserver.authorization-mode=RBAC $ kubectl create namespace agones-system $ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/agones/release-0.10.0/install/yaml/install.yaml
これでインストール完了。
では、単純な UDP サーバーを立ててみる。
$ kubectl create -f https://raw.githubusercontent.com/googleforgames/agones/release-0.11.0/examples/simple-udp/gameserver.yaml
もうこの状態で、exampleの UDP サーバーが立ち上がってる。kubectl get gameserver
というコマンドで確認できる。
$ kubectl get gameserver NAME STATE ADDRESS PORT NODE AGE simple-udp-6mjqg Ready 10.0.2.15 7020 minikube 3s
実際にこのサーバーにUDP接続してみる。
minikube は VirtualBox 上で動かしてるので、ホストから接続しようと思ったら、minikube ip
でVMのIPを取ったらうまくいった。(このへんは、あまり自分が k8s, minikube に詳しくないため曖昧だが)
公式ドキュメントの simple-udp
という example は適当な文字列を送ると、そのまま ACK として返してくれるやつらしい。
$ nc -u $(minikube ip) 7020 hello-world ACK: hello-world
すごい!つながった (⌒▽⌒)
ping service という監視用の service が作られてる。なるほど〜。
$ minikube service list |---------------|---------------------------|-----------------------------| | NAMESPACE | NAME | URL | |---------------|---------------------------|-----------------------------| | agones-system | agones-controller-service | No node port | | agones-system | agones-ping-http-service | http://192.168.99.100:31639 | | agones-system | agones-ping-udp-service | http://192.168.99.100:32313 | | default | kubernetes | No node port | | kube-system | kube-dns | No node port | | kube-system | kubernetes-dashboard | http://192.168.99.100:30000 | |---------------|---------------------------|-----------------------------|