Config を作成する

このページでは、デプロイメントで Game Servers の構成ファイルの登録、編集、一覧表示、詳細表示を行う方法について説明します。 この構成ファイルでは、Agones フリート仕様を定義します。この仕様には、Game Servers の数、バッファ、Game Servers バージョンに関する情報が含まれます。この構成はスケーリング構成も定義します。これは、需要を満たすためにフリートを自動的にスケールアップまたはスケールダウンする方法を指定します。

始める前に

始める前に、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 は、クライアント ライブラリを使用して、プログラムで制御できます。ライブラリと認証の手順については、クライアント ライブラリの概要をご覧ください。

Config を作成する

Game Servers のデプロイメントを作成していることを確認します。

Console

  1. コンソールで、Game Servers の [デプロイ] ページに移動します。

    Game Servers に移動

  2. テーブルでデプロイメントを見つけます。最後のテーブル列で、省略記号 をクリックし、[List configs] を選択します。このページで、デプロイメントのアクティブ構成と非アクティブ構成を確認できます。

  3. デプロイの新しい構成を作成するには、[構成の作成] をクリックします。

  4. [Config name] ボックスに、この構成の一意の識別子を入力します。

  5. (省略可)[説明] ボックスに、このデプロイメントの説明を入力します。

  6. [Fleet config name] ボックスに、このフリート構成の一意の識別子を入力します。

  7. [Fleet spec] ボックスに、フリート仕様を入力します。

  8. (省略可)[Scaling config] で、フリートを自動的にスケーリングする構成を 1 つ以上指定できます。[追加] をクリックして、スケーリング構成を追加します。

    1. [Scaling Config Name] ボックスに、このスケーリング構成の一意の識別子を入力します。
    2. (省略可)[開始時間] ボックスと [終了時間] ボックスで、このスケーリング構成を有効にする期間のスケジュールを設定します。詳細については、スケーリング スケジュールの作成をご覧ください。
    3. [Autoscaper spec] ボックスに、スケーリングの仕様を入力します。

gcloud

Google Cloud CLI を使用して、デプロイメントに Game Servers の構成ファイルを作成できます。

Game Servers の構成ファイルを作成するには:

  1. このフリート仕様をファイルにコピーします。

    - name: fleet-spec-1
      fleetSpec:
       replicas: 10
       scheduling: Packed
       strategy:
         type: RollingUpdate
         rollingUpdate:
           maxSurge: 25%
           maxUnavailable: 25%
       template:
         metadata:
           labels:
             gameName: udp-server
         spec:
           ports:
           - name: default
             portPolicy: Dynamic
             containerPort: 7654
             protocol: UDP
           health:
             initialDelaySeconds: 30
             periodSeconds: 60
           sdkServer:
             logLevel: Info
             grpcPort: 9357
             httpPort: 9358
           template:
             spec:
               containers:
               - name: dedicated
                 image: gcr.io/agones-images/udp-server:0.21
                 imagePullPolicy: Always
                 resources:
                   requests:
                     memory: 200Mi
                     cpu: 500m
                   limits:
                     memory: 200Mi
                     cpu: 500m
    
  2. 次のコマンドを実行します。deploymentIDconfigID などのプレースホルダ値は、適切な値に置き換えます。

    gcloud game servers configs create configID --deployment deploymentID --fleet-configs-file fleetSpecFile
    

    変数のプレースホルダは、次の説明のとおりです。

  • configID は、この構成ファイルに指定できる一意の ID です。
  • deploymentID は、デプロイメントの一意の ID です。
  • fleetSpecFile は、Agones フリート仕様を含むファイルへのパスです。

REST とコマンドライン

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: IAM 設定に載っている Google Cloud プロジェクト ID。
  • DEPLOYMENT_ID: デプロイメントのユーザー定義の識別子。
  • CONFIG_ID: 構成のユーザー定義の識別子。

JSON 本文をリクエストします。

{
  "fleetConfigs": [
    {
      "name": "fleet-spec-1",
      "fleetSpec": "{
        \"replicas\": 10,
        \"scheduling\": \"Packed\",
        \"template\": {
          \"metadata\": {
            \"labels\": {
              \"gameName\": \"udp-server\"
            }
          },
          \"spec\": {
            \"ports\": [
              {
                \"name\": \"default\",
                \"portPolicy\": \"Dynamic\",
                \"containerPort\": 7654,
                \"protocol\": \"UDP\"
              }
            ],
            \"health\": {
              \"periodSeconds\": 60,
              \"initialDelaySeconds\": 30
            },
            \"sdkServer\": {
              \"logLevel\": \"Info\",
              \"grpcPort\": 9357,
              \"httpPort\": 9358
            },
            \"template\": {
              \"spec\": {
                \"containers\": [
                  {
                    \"name\": \"dedicated\",
                    \"image\": \"gcr.io/agones-images/udp-server:0.21\",
                    \"imagePullPolicy\": \"Always\",
                    \"resources\": {
                      \"requests\": {
                        \"memory\": \"200Mi\",
                        \"cpu\": \"500m\"
                      },
                      \"limits\": {
                        \"memory\": \"200Mi\",
                        \"cpu\": \"500m\"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }"
    }
  ]
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_ID/locations/global/gameServerDeployments/DEPLOYMENT_ID/configs/CONFIG_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

構成の編集

構成は不変であるため、Game Servers の構成は編集できません。構成を編集するには、その構成をコピーし(構成の詳細を表示)、ローカルに編集し、更新版を使用して新しい構成を作成します。

構成ファイルの一覧表示

Console

  1. コンソールで、Game Servers の [デプロイ] ページに移動します。

    Game Servers に移動

  2. テーブルでデプロイメントを見つけます。最後のテーブル列で、省略記号 をクリックし、[List configs] を選択します。このページで、デプロイメントのアクティブ構成と非アクティブ構成を確認できます。

gcloud

Google Cloud CLI を使用して、構成ファイルを一覧表示できます。

すべての構成ファイルを一覧表示するには:

gcloud game servers configs list

デプロイメント内のすべての構成ファイルを一覧表示するには、次のコマンドを実行します。deploymentID は、一覧表示する構成ファイルのある親デプロイメントで置き換えます。

gcloud game servers configs list --deployment=deploymentID

REST とコマンドライン

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: IAM 設定に載っている Google Cloud プロジェクト ID。
  • DEPLOYMENT_ID: デプロイメントのユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "gameServerConfigs": [
    {
      "name": "projects/PROJECT_ID/locations/global/gameServerDeployments/DEPLOYMENT_ID/configs/MY-CONFIG-1",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "fleetConfigs": [
        {
          "fleetSpec": ...
          "name": "MY-CONFIG-1"
        }
      ],
      "description": "Config 1"
    },
    {
      "name": "projects/PROJECT_ID/locations/global/gameServerDeployments/DEPLOYMENT_ID/configs/MY-CONFIG-2",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "fleetConfigs": [
        {
          "fleetSpec": ...
          "name": "MY-CONFIG-2"
        }
      ],
      "description": "Config 2"
    },
  ]
}

構成ファイルの詳細表示

Console

  1. コンソールで、Game Servers の [デプロイ] ページに移動します。

    Game Servers に移動

  2. テーブルでデプロイメントを見つけます。最後のテーブル列で、省略記号 をクリックし、[List configs] を選択します。このページで、デプロイメントのアクティブ構成と非アクティブ構成を確認できます。

  3. テーブルで構成を見つけます。最後のテーブル列で、省略記号 をクリックして、[構成を表示] を選択します。

gcloud

Google Cloud CLI を使用して、作成時間など構成ファイルの詳細を確認できます。

構成ファイルの詳細を表示するには、次のコマンドを実行します。deploymentIDconfigID などのプレースホルダ値は、適切な値に置き換えます。

gcloud game servers configs describe configID --deployment deploymentID

構成ファイルの詳細が出力に表示されます。

変数のプレースホルダは、次の説明のとおりです。

  • configID は、この Game Servers 構成ファイルに指定した一意の ID です。
  • deploymentID は、親デプロイメントの一意の ID です。

REST とコマンドライン

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: IAM 設定に載っている Google Cloud プロジェクト ID。
  • DEPLOYMENT_ID: デプロイメントのユーザー定義の識別子。
  • CONFIG_ID: 構成のユーザー定義の識別子。

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/global/gameServerDeployments/DEPLOYMENT_ID/configs/CONFIG_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "fleetConfigs": [
    {
      "fleetSpec": ...
      "name": "CONFIG_ID"
    }
  ],
  "description": "My config"
}

次のステップ