Agones を minikube でさくっと試す

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 |
|---------------|---------------------------|-----------------------------|