Agones のアップグレード

このページでは、Game Servers クラスタの Agones を安全にアップグレードする方法について説明します。

始める前に

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

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

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

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

      Google Cloud Console

    2. コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン をクリックします。

    コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルを使用して、gcloud コマンドを実行します。

    ローカルシェル

    gcloud をインストールするには、Cloud SDK をインストールします。これには、gcloud コマンドライン ツールが含まれています。

    gcloud コマンドライン ツールに必要なデフォルトのプロジェクトが設定されていることを確認します(設定されていない場合、後でコマンドごとに --project フラグを明示的に指定する必要があります)。

    gcloud config list project
    

    デフォルト プロジェクトを設定していない場合は、次のコマンドを実行して、デフォルト プロジェクトを設定します。project-id は、設定するプロジェクト ID に置き換えてください。

    gcloud config set project project-id
    

    次のコマンドを実行して、Google Cloud SDK のバージョンを確認します。Game Servers では、バージョン 306.0.0 以降の SDK が必要です。

    gcloud version
    

    インストールを更新するには、次のコマンドを実行します。

    gcloud components update
    

    クライアント ライブラリ

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

アップグレードを計画する

新しい Game Servers クラスタをレルムに追加してから、古いクラスタを削除することで、Agones アップグレードを行うことをおすすめします。この方法には次のメリットがあります。

  1. メンテナンスの時間枠なしでアップグレードを行う際、新しいクラスタを作成することは、Agones プロジェクトで推奨されているベスト プラクティスと一致します。この方法により、クラスタ上でゲームが実行されている間での Agones のアップグレードに関連する潜在的な問題を回避できます。
  2. Kubernetes または Google Kubernetes Engine のノードを実際に試してアップグレードする必要はありません。サービスのノードの削除に関する問題などを回避できます。
  3. 単一のオペレーションとしての Kubernetes と Agones の新しいバージョンを含む、アップグレード プロセスの一部として多数のコンポーネントのテストを行い、そのコンポーネントを一緒に本番環境にロールアウトできます。

カナリア アップグレードを計画する

本番環境に適用する前に、新しい Agones バージョンを非本番環境で必ずテストしてください。新しい Agones バージョンを検証したら、本番環境でカナリア レルムをアップグレードすることから始めます。カナリア アップグレードとは、最初に 1 つまたは少数のレルムに適用されるアップグレードのことです。カナリア アップグレードでは、潜在的な問題を含むアップグレードをすべてのレルムに対して行うのではなく、インフラストラクチャのごく一部で新しい機能をテストできます。アップグレードがうまくできない場合は、ユーザーへの中断を最小限に抑え、影響を受けたレルムをロールバックできます。指定されたカナリア レルムがない場合は、トラフィックが最も少ないレルムを選択します。

アップグレードの実施

このセクションでは、古いバージョンの Agones のクラスタから、アップグレードされたバージョンの Agones クラスタに GameServer 割り当てを移行するためのアップグレード手順について説明します。このアップグレード手順では、新しいクラスタでマルチクラスタの割り当てが構成されていることを前提としています。

また、次の手順を行うことで、プレーヤーのエクスペリエンスの中断を最小限に抑えながら、本番環境で動作することがわかっている以前のインフラストラクチャに簡単にロールバックできます。

  1. 現在のクラスタと同じサイズの新しいクラスタを作成します。

  2. 互換性のあるバージョンの Kubernetes と一緒に、新しいクラスタに新しいバージョンの Agones をインストールします。サポートされているバージョンのリストについては、バージョンとアップグレードをご覧ください。

  3. レルムに新しいクラスタを登録します。これにより、レルムに登録された既存のクラスタと同様に、フリートとオートスケーラーのリソースが作成されます。フリートの準備ができると、一部の一致したプレーヤー ゲーム セッションが新しいクラスタに送信されます。

  4. 新しいバージョンの Agones を実行している新しいクラスタの安定性を確認したら、古いクラスタの登録を解除し、削除します。Game Servers クラスタの登録を解除して削除すると、割り当てられたサーバー、フリート、フリート オートスケーラーの構成はそのまま残ります。実際の Kubernetes クラスタで注目する唯一の変更点は、Game Servers によって管理されず、マルチクラスタの割り当てに接続されることがないことです。Game Servers は、登録解除されたクラスタへの新しい割り当てリクエストの送信を停止します。

  5. 古いクラスタの関連するエンドポイントに直接アクセスされている場合で、古いクラスタに対する追加の割り当てを防ぐには、古いサーバーのアロケータ サービス内にあるすべてのポッドを削除します。

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. クラスタ内で割り当てられたサーバーがすでにない場合は、古いクラスタをシャットダウンします。割り当てられたサーバーの数を確認するには、次のコマンドを実行します。ここで、namespace は Kubernetes クラスタを Game Servers クラスタとして登録するときに使用した Namespace です。

    kubectl get fleet --namespace namespace
    
    NAME         SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-1      Packed       10        10        0           10      2d23h
    
    

アップグレードが必要なクラスタごとに、このアップグレード手順を繰り返します。