Agnes はKubernetes上で動くGame Dedicated Server のライブラリです。
オープンソースで大規模なスケールのマルチプレイサーバにも対応しています。
サンプルを利用してAzure Kubernetes Service への展開を試しました
詳細はこちらに記載されていますが、Cloud Shellで実行されているためここではGUIでの手順を記載します。
AKSクラスターの作成
(1)リソースグループを作成
リージョンは任意ですがとりあえず「東日本」を選択
(2)AKSクラスターを作成するため「Kubernetes Service」を検索し「作成」をクリック
(4)複数のノードプールを設定する場合は追加(今回はデフォルト
(5)クラスターへの認証とアクセス制限を設定(今回はデフォルト)
(6)ネットワークやセキュリティ設定の設定(今回はデフォルト)
(7)Azure Container Registryと連携するようであれば設定
監視はAzure Monitorを利用するため「有効」がチェックされているか確認
(9)AKSクラスターにUDPトラフィックを通過させる必要があるため、NSGの受信セキュリティ規則に宛先ポート範囲を7000~8000に設定した新しいルールを作成。
Agonesのインストール
やり方はyamlファイルを使用する方法とhelmパッケージマネージャを利用する方法があります。
今回はテストなのでyamlの方で試します
(1)Azure CLIにて下記コマンドでAKSクラスタに接続
(myResourceGroup と myAKSCluster は適宜自分の環境に合わせて書き換えて下さい)
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
(2)接続を確認するためにクラスタノードの一覧を表示
kubectl get nodes
(3)Agones をインストールするため、下記コマンドを実行
kubectl create namespace agones-system
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.20.0/install/yaml/install.yaml
ただしこのURLのinstall.yamlはデフォルトのものなので、ローカルにダウンロードし必要に応じて内容は変更した上でこちらの手順を実施してください
各パラメータの詳細はこちら
(4)正常にインストールされたことを確認するために、下記コマンドを実行
6つのPodが正常に稼働していることが確認できる
kubectl describe --namespace agones-system pods
kubectl get pods --namespace agones-system
ゲームサーバを作成する
テストのためにAgonesを使ったGameServerを作成します
(1)Azure CLIにて下記コマンドを実行しサンプルゲームサーバを作成
kubectl create -f https://raw.githubusercontent.com/googleforgames/agones/release-1.20.0/examples/simple-game-server/gameserver.yaml
Kubernetesの中にGameServerを作成し、シンプルなudpゲームサーバーコードを実行するためのバッキングポッドも作成。
下記コマンドで実行状況を確認することができる。
kubectl get gameservers
(2)サーバステータスに関してはそれぞれ下記コマンドで確認することが可能
ステータスの状態変化を確認
watch kubectl describe gameserver
IPアドレスの取得
kubectl get gs
(3)netcat が実行可能なAKSと同一ネットワークにあるVMなどからコマンドを実行し
ゲームサーバと通信できることを確認
nc -u {IP} {PORT}
各ゲームエンジンに対応したSDKも用意されているので、それぞれのSDKを使ったゲームサーバの挙動もそのうち試したい