このページでは、カナリア フェーズで新しい Game Servers 構成ファイルをロールアウトするための 2 つの異なる選択肢について説明します。カナリア フェーズでは、新しい構成ファイルを少数のユーザーにデプロイします。こうすることで、すべてのユーザーに影響を及ぼさずに、潜在的な問題を特定できます。
最初の方法は、カナリア リージョンを使用するものです。この方法は簡単に設定できますが、ロールアウトが失敗するとリージョン全体に影響を及ぼします。もう一つの方法は、カナリア デプロイメントを作成するものです。この方法はより柔軟ですが、管理がより複雑なプロセスになります。
始める前に
始める前に、Game Servers の概要の主なコンセプトを理解しておくことをおすすめします。次のタスクも完了していることを確認してください。
- Game Services API が有効になっていることを確認します。 Game Services API を有効にする
- gcloud CLI がインストールされているシェルを選択するか、API クライアントを使用します。
Google Cloud Console に移動します。
コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン
をクリックします。
- サービス アカウントを作成する。
- 秘密鍵を JSON ファイルとしてダウンロードします。
-
環境変数
GOOGLE_APPLICATION_CREDENTIALS
を、認証情報を含む JSON ファイルのパスに設定します。この変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定する必要があります。
Cloud Shell
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
curl / PowerShell
REST API を curl
または Windows PowerShell で使用するには、次の操作を行います。
クライアント ライブラリ
Google Cloud Game Servers は、クライアント ライブラリを使用して、プログラムで制御できます。ライブラリと認証の手順については、クライアント ライブラリの概要をご覧ください。
ロールアウトの状態を確認する
ロールアウトのさまざまな時点で、サーバーの健全性を確認してください。収集したデータを使用して、ロールアウトを続行しても安全かどうかを判断できます。ヘルスチェックで問題が見つかった場合は、ロールアウトを一時停止またはキャンセルすることをおすすめします。
ロールアウトの状態を確認するには、次におすすめする方法を行います。
個々のゲームサーバー インスタンスの状態が
Ready
になっているか確認します。Agones によって
GameServer
のライフサイクル全体が割り当てられ、管理されていることを確認します。メイン デプロイとカナリア デプロイの両方のGameServers
に、予定通りにGameServerAllocation
required
セレクタがあることを確認してください。マッチメイカーには、カナリア デプロイからの割り当てを変更する必要がなくなります。必要に応じて、GameServerAllocation
仕様で「preferred」属性を使用し、カナリア フリートから優先的に割り当てることができます。デプロイメント内の該当のゲーム指標とシステム指標がパフォーマンスの低下を引き起こしていないかをモニタリングして確認してください。
カナリア リージョンへのロールアウト
Game Servers では、1 つ以上のレルムで構成をオーバーライドできます。カナリア リージョンのクラスタが別々の領域にあるかを確認してください。
この例では、「australia」レルムがカナリア レルムです。
v2
を australia
レルムでアクティブな構成ファイルとして設定するには:
次のコードをファイルにコピーします。
- realmsSelector: realms: - projects/games/locations/australia-southeast1/realms/australia configVersion: v2
変更を適用するには、次のコマンドを実行します。
gcloud game servers deployments update-rollout stk --config-overrides-file configOverrideFile --no-dry-run
configOverrideFile は、オーバーライドの構成ファイルを含むファイルへのパスです。
カナリア リージョンが正常であることを確認したら、次のコマンドを実行して新しいバージョンをすべてのロケーションにデプロイします。
gcloud game servers deployments update-rollout stk --default-config "v2" --no-dry-run
オペレーションが完了すると、v2
構成ファイルがあらゆるロケーションにロールアウトされます。
次のコマンドを実行して、オーバーライドをクリーンアップします。
gcloud game servers deployments update-rollout stk --no-dry-run --clear-config-overrides
カナリア デプロイへのロールアウト
個別のデプロイを使用して、構成ファイルをテストできます。当初は、専用のカナリア デプロイはありません。
まず、カナリア デプロイを作成します。
gcloud game servers deployments create canary
現在の割り当て方法を変更する必要がないように、GameServerAllocation で使用されているセレクタが、メイン フリートとカナリア フリートの両方から GameServers を選択できるようにします。
次に、次のコマンドを実行して、非カナリア デプロイのアクティブな構成ファイルと同じ
v1
構成ファイルを作成します。gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
ここで、fleetSpecFile はフリート仕様を含むファイルのパスです。scalingConfigFile は、すべてのスケーリング構成を含むファイルのパスです。
カナリア フリートが通常のフリートよりもはるかに小さくなるように、スケーリング構成ファイルを設定することをおすすめします。
v1
構成ファイルがすべてのロケーションにロールアウトされるように、次のコマンドを実行してカナリア ロールアウトを更新します。gcloud game servers deployments update-rollout canary --default-config v1 --no-dry-run
カナリア フリートが正常であることを確認します。
次のコマンドを実行して、カナリア デプロイに
v2
構成ファイルを作成します。gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
ここで、fleetSpecFile はフリート仕様を含むファイルのパスです。scalingConfigFile は、すべてのスケーリング構成を含むファイルのパスです。カナリア フリートは小さいサイズに構成することをおすすめします。
次のコマンドを実行して、
v2
構成ファイルをカナリア デプロイにロールアウトします。gcloud game servers deployments update-rollout canary --default-config v2 --no-dry-run
カナリア フリートが正常であることを確認します。
次のコマンドを実行して、
v2
構成ファイルをメイン デプロイにロールアウトします。gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
フリートが正常かを確認します。この段階で、
v2
がすべての場所でロールアウトされます。カナリア デプロイをクリーンアップします。
次のコマンドを実行して、カナリア デプロイのロールアウトをクリアします。
gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
次のコマンドを実行して、「v1」構成ファイルを削除します。
gcloud game servers configs delete v1 --deployment=canary
次のコマンドを実行して、「v2」構成ファイルを削除します。
gcloud game servers configs delete v2 --deployment=canary
次のコマンドを実行して、カナリア デプロイメントを削除します。
gcloud game servers deployments delete canary
デプロイメントをより細かく制御する場合は、デフォルトとして構成ファイルを設定する前に、オーバーライドを使用して、選択したレルムに構成ファイルをロールアウトできます。同じ手順に従って、カナリア デプロイを段階的にロールアウトします。
固定のカナリア デプロイを維持することで、最初の 3 つのステップと最後のステップをスキップできます。定期的なロールアウトが頻繁にある場合は、この方法をおすすめします。