カナリア構成ファイルのロールアウト

このページでは、カナリア フェーズで新しい Game Servers 構成ファイルをロールアウトするための 2 つの異なる選択肢について説明します。カナリア フェーズでは、新しい構成ファイルを少数のユーザーにデプロイします。こうすることで、すべてのユーザーに影響を及ぼさずに、潜在的な問題を特定できます。

最初の方法は、カナリア リージョンを使用するものです。この方法は簡単に設定できますが、ロールアウトが失敗するとリージョン全体に影響を及ぼします。もう一つの方法は、カナリア デプロイメントを作成するものです。この方法はより柔軟ですが、管理がより複雑なプロセスになります。

始める前に

始める前に、Game Servers の概要の主なコンセプトを理解しておくことをおすすめします。次のタスクも完了していることを確認してください。

  • Game Services API が有効になっていることを確認します。
  • Game Services API を有効にする
  • gcloud CLI がインストールされているシェルを選択するか、API クライアントを使用します。
  • Cloud Shell

    Cloud Shell を起動するには、次の手順に従います。

    1. Google Cloud Console に移動します。

      Google Cloud Console

    2. コンソールの右上隅にある [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 で使用するには、次の操作を行います。

    1. サービス アカウントを作成する。
    2. 秘密鍵を JSON ファイルとしてダウンロードします。
    3. 環境変数 GOOGLE_APPLICATION_CREDENTIALS を、認証情報を含む JSON ファイルのパスに設定します。この変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定する必要があります。

    クライアント ライブラリ

    Google Cloud Game Servers は、クライアント ライブラリを使用して、プログラムで制御できます。ライブラリと認証の手順については、クライアント ライブラリの概要をご覧ください。

ロールアウトの状態を確認する

ロールアウトのさまざまな時点で、サーバーの健全性を確認してください。収集したデータを使用して、ロールアウトを続行しても安全かどうかを判断できます。ヘルスチェックで問題が見つかった場合は、ロールアウトを一時停止またはキャンセルすることをおすすめします。

ロールアウトの状態を確認するには、次におすすめする方法を行います。

  1. 個々のゲームサーバー インスタンスの状態が Ready になっているか確認します。

  2. Agones によって GameServer のライフサイクル全体が割り当てられ、管理されていることを確認します。メイン デプロイとカナリア デプロイの両方の GameServers に、予定通りに GameServerAllocation required セレクタがあることを確認してください。マッチメイカーには、カナリア デプロイからの割り当てを変更する必要がなくなります。必要に応じて、GameServerAllocation 仕様で「preferred」属性を使用し、カナリア フリートから優先的に割り当てることができます。

  3. デプロイメント内の該当のゲーム指標とシステム指標がパフォーマンスの低下を引き起こしていないかをモニタリングして確認してください。

カナリア リージョンへのロールアウト

Game Servers では、1 つ以上のレルムで構成をオーバーライドできます。カナリア リージョンのクラスタが別々の領域にあるかを確認してください。

この例では、「australia」レルムがカナリア レルムです。

カナリア用に別のレルムを使用するアーキテクチャ

v2australia レルムでアクティブな構成ファイルとして設定するには:

  1. 次のコードをファイルにコピーします。

    - realmsSelector:
        realms:
            - projects/games/locations/australia-southeast1/realms/australia
      configVersion: v2
    

  2. 変更を適用するには、次のコマンドを実行します。

    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

カナリア デプロイへのロールアウト

個別のデプロイを使用して、構成ファイルをテストできます。当初は、専用のカナリア デプロイはありません。

個別のカナリア デプロイの初期状態

  1. まず、カナリア デプロイを作成します。

    gcloud game servers deployments create canary
    

    現在の割り当て方法を変更する必要がないように、GameServerAllocation で使用されているセレクタが、メイン フリートとカナリア フリートの両方から GameServers を選択できるようにします。

  2. 次に、次のコマンドを実行して、非カナリア デプロイのアクティブな構成ファイルと同じ v1 構成ファイルを作成します。

    gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    ここで、fleetSpecFile はフリート仕様を含むファイルのパスです。scalingConfigFile は、すべてのスケーリング構成を含むファイルのパスです。

    カナリア フリートが通常のフリートよりもはるかに小さくなるように、スケーリング構成ファイルを設定することをおすすめします。

  3. v1 構成ファイルがすべてのロケーションにロールアウトされるように、次のコマンドを実行してカナリア ロールアウトを更新します。

    gcloud game servers deployments update-rollout canary --default-config v1 --no-dry-run
    

    カナリア フリートが正常であることを確認します。

    最初のカナリア デプロイ後のアーキテクチャ

  4. 次のコマンドを実行して、カナリア デプロイに v2 構成ファイルを作成します。

    gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    ここで、fleetSpecFile はフリート仕様を含むファイルのパスです。scalingConfigFile は、すべてのスケーリング構成を含むファイルのパスです。カナリア フリートは小さいサイズに構成することをおすすめします。

  5. 次のコマンドを実行して、v2 構成ファイルをカナリア デプロイにロールアウトします。

    gcloud game servers deployments update-rollout canary --default-config v2 --no-dry-run
    

    カナリア フリートが正常であることを確認します。

    新しいカナリア デプロイ後のアーキテクチャ

  6. 次のコマンドを実行して、v2 構成ファイルをメイン デプロイにロールアウトします。

    gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
    

    フリートが正常かを確認します。この段階で、v2 がすべての場所でロールアウトされます。

    デプロイ後のアーキテクチャ

  7. カナリア デプロイをクリーンアップします。

    1. 次のコマンドを実行して、カナリア デプロイのロールアウトをクリアします。

      gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
      

    2. 次のコマンドを実行して、「v1」構成ファイルを削除します。

      gcloud game servers configs delete v1 --deployment=canary
      

    3. 次のコマンドを実行して、「v2」構成ファイルを削除します。

      gcloud game servers configs delete v2 --deployment=canary
      

    4. 次のコマンドを実行して、カナリア デプロイメントを削除します。

      gcloud game servers deployments delete canary
      

    クリーンアップ後のアーキテクチャ

デプロイメントをより細かく制御する場合は、デフォルトとして構成ファイルを設定する前に、オーバーライドを使用して、選択したレルムに構成ファイルをロールアウトできます。同じ手順に従って、カナリア デプロイを段階的にロールアウトします。

固定のカナリア デプロイを維持することで、最初の 3 つのステップと最後のステップをスキップできます。定期的なロールアウトが頻繁にある場合は、この方法をおすすめします。