オープンソースのゲームタイトル用のサーバーのデプロイ
このクイックスタートでは、Game Servers で Google Cloud CLI を使用して、Game Servers のレルム、クラスタ、デプロイメント、構成ファイル、ロールアウトを行う方法について説明します。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Game Services API が有効になっていることを確認します。 Game Services API を有効にする
シェルを選択する
このクイックスタートを完了するには、Cloud Shell またはローカルシェルを使用します。
Google Cloud Shell は、Google Cloud でホストされているリソースを管理するためのシェル環境です。Cloud Shell には、gcloud
コマンドライン ツールがプリインストールされています。gcloud CLI には、Game Servers のプライマリ コマンドライン インターフェースが備わっています。
Cloud Shell
Cloud Shell を起動するには、次の手順に従います。
Google Cloud Console に移動します。
コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン をクリックします。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud
コマンドを実行します。
ローカルシェル
gcloud CLI をインストールします。
Google Cloud CLI に必要なデフォルトのプロジェクトが設定されていることを確認します(設定されていない場合、後でコマンドごとに --project
フラグを明示的に指定する必要があります)。
gcloud config list project
デフォルト プロジェクトを設定していない場合は、次のコマンドを実行して、デフォルト プロジェクトを設定します。PROJECT_ID
は、設定するプロジェクト ID に置き換えてください。
gcloud config set project PROJECT_ID
次のコマンドを実行して、Google Cloud CLI のバージョンを確認します。Game Servers には、gcloud CLI のバージョン 306.0.0
以降が必要です。
gcloud version
インストールを更新するには、次のコマンドを実行します。
gcloud components update
ローカルシェルを選択した場合は、Kubernetes コマンドライン ツール kubectl
のインストールが必要な場合があります。
gcloud components install kubectl
Google Kubernetes Engine クラスタの作成
Google Kubernetes Engine クラスタを作成するには:
Cloud Console で、Kubernetes Engine API を有効にします。
次のコマンドを実行して、
us-central1-a
ゾーンにノードが 1 つあるコスト最適化されたクラスタを作成します。gcloud container clusters create gcgs-quickstart \ --cluster-version=1.23 \ --tags=game-server \ --scopes=gke-default \ --num-nodes=1 \ --no-enable-autoupgrade \ --machine-type=e2-standard-2 \ --zone=us-central1-a
次のコマンドを実行して、前のステップで作成した GKE クラスタの認証情報を取得します。
gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
kubectl
はこれらの認証情報を使用して、Kubernetes クラスタでコマンドを実行します。詳しくは、kubectl 用のクラスタ アクセスの構成をご覧ください。
GKE への Agones のインストール
このセクションでは、オープンソースの Agones ゲーム インフラストラクチャ プラットフォームをインストールします。以下の手順で、Agones をインストールします。
次のコマンドを実行して
agones-system
Namespace を作成します。kubectl create namespace agones-system
次のコマンドを実行して Agones をインストールします。
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
Kubernetes Pod のステータスを確認することで、Agones システムが稼働していることを確認できます。
kubectl get --namespace agones-system pods
すべての Pod は
Running
状態になっています。NAME READY STATUS RESTARTS AGE agones-allocator-6694dcc89-7r75d 1/1 Running 0 28s agones-allocator-6694dcc89-m7ghq 1/1 Running 0 28s agones-allocator-6694dcc89-qp6cm 1/1 Running 0 28s agones-controller-56c98db844-llzzc 1/1 Running 0 22s agones-ping-d9d74c5c6-8kmt6 1/1 Running 0 24s agones-ping-d9d74c5c6-xwn4h 1/1 Running 0 24s
Game Servers リソースの作成
Game Servers リソースを作成するには、次のようにします。
GKE クラスタと同じロケーションにレルムを作成します。
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
Agones GKE クラスタを Game Servers に登録し、前の手順で作成したレルムに接続します。
gcloud game servers clusters create cluster-quickstart \ --realm=realm-quickstart \ --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \ --namespace=default \ --location us-central1 \ --no-dry-run
Game Servers のデプロイを作成します。作成したデプロイを使用して、すべてのゲームサーバー構成を保存し、Game Servers クラスタにロールアウトします。
gcloud game servers deployments create deployment-quickstart
Game Servers のデプロイメントを作成していますので、gcloud CLI を使用して Game Servers 構成を追加できます。
次の Agones フリート仕様マニフェストの例を、現在のディレクトリ内の
fleet_configs.yaml
という名前の新しいファイルにコピーします。- name: fleet-spec-1 fleetSpec: replicas: 2 template: metadata: labels: foo: bar spec: ports: - name: default portPolicy: Dynamic containerPort: 7654 template: spec: containers: - name: simple-game-server image: gcr.io/agones-images/simple-game-server:0.3
Game Servers 構成ファイルを作成するには、次のコマンドを実行します。
gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
ロールアウトを更新するには、次のコマンドを実行します。
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
デフォルトの Namespace にある 1 つのフリートのロールアウトを検証するには、次のコマンドを実行します。
kubectl get fleet
以下の出力が想定されます。
NAME SCHEDULING DESIRED CURRENT ALLOCATED READY AGE fleet-deployment-quickstart-config-1 Packed 2 2 0 2 4s
この出力により、クラスタに接続を受け入れる準備が整っている 2 つのシンプルな UDP サーバー レプリカを含むフリートがデプロイされたことが確認できます。
Game Servers への接続をテストする
Game Servers への接続をテストするには、次を実行します。
クラスタへの接続に必要な UDP ポートを開くファイアウォール ルールを作成します。
gcloud compute firewall-rules create gcgs-quickstart-firewall \ --allow udp:7000-8000 \ --target-tags game-server \ --description "Firewall to allow game server udp traffic"
次に、個々の Game Servers の IP アドレスとポート番号を取得します。
kubectl get gameserver
このコマンドでは、次のような出力が返されます。
NAME STATE ADDRESS PORT NODE AGE fleet-deployment-quickstart-config-1-nndvr-5gvch Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s fleet-deployment-quickstart-config-1-nndvr-vqwpl Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s
接続をテストするには、Netcat コマンドを実行します。Netcat を Linux にインストールするには、次のコマンドを実行します。
sudo apt install netcat
テストを開始するには、次のコマンドを実行します。
nc -u IP_ADDRESS PORT_NUMBER
次に「
Hello
」と入力すると、コマンドは次のような出力を返します。Hello > ACK: Hello
Ctrl+C キーを押して、出力を停止します。
(省略可)オープンソースのゲームタイトル用のサーバーのデプロイ
ロールアウトを更新して、クラスタに 2 つのオープンソース ゲームサーバー レプリカを持つフリートをデプロイできます。これらのゲームサーバーは、レーシング ゲーム SuperTuxKart のマルチプレーヤー バージョンをサポートしています。
既存の
fleet_configs.yaml
ファイルを、次の Agones フリート仕様で上書きします。- name: supertuxkart fleetSpec: replicas: 2 template: metadata: labels: version: "1.0" spec: ports: - name: default containerPort: 8080 health: initialDelaySeconds: 30 periodSeconds: 60 template: spec: containers: - name: supertuxkart image: gcr.io/agones-images/supertuxkart-example:0.3
既存のゲームサーバーの構成は変更できないため、更新できません。更新されたフリート仕様マニフェストを参照する新しい構成を作成します。
gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
新しい構成でロールアウトを更新します。
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
個々のゲームサーバーの IP アドレスとポート番号を取得します。
kubectl get gameserver
SuperTuxKart クライアントを起動します。
メインメニューの [Online] ボタンをクリックし、[Enter server address] ボタンをクリックします。
個々のゲームサーバーの IP アドレスとポート番号を(前のステップから)入力します。
[Start race] をクリックしてゲームを開始します。
他のプラットフォームに SuperTuxKart クライアントをダウンロードして同じサーバーに接続し、レースに参加できます。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
このクイックスタートで作成したリソースを保持しない場合は、プロジェクトを削除できます。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
または、プロジェクトを保持する場合は、次の手順を実施して、このクイックスタートで作成したリソースを手動で削除します。
ファイアウォール ルールを削除するには、次のコマンドを実行します。
gcloud compute firewall-rules delete gcgs-quickstart-firewall
デフォルトのロールアウトを消去するには、次のコマンドを実行します。
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
Game Servers 構成ファイルを削除するには、次のコマンドを実行します。
gcloud game servers configs delete config-1 --deployment deployment-quickstart
省略可能なセクションを完了したら、追加のゲームサーバー構成を削除します。
gcloud game servers configs delete stk-1 --deployment deployment-quickstart
Game Servers デプロイを削除するには、次のコマンドを実行します。
gcloud game servers deployments delete deployment-quickstart
Game Servers クラスタを削除するには、次のコマンドを実行します。
gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
レルムを削除するには、次のコマンドを実行します。
gcloud game servers realms delete realm-quickstart --location=us-central1
Game Services API を無効にするには、次のコマンドを実行します。
gcloud services disable gameservices.googleapis.com
GKE クラスタを削除するには、次のコマンドを実行します。
gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
次のステップ
Game Servers のコンセプトの技術的な概要について、Game Servers の概要を確認する。
入門ガイドで、特定の Game Servers タスクについて確認する。
Terraform デプロイメントのサンプル プロジェクトを確認する。