マルチクラスタの割り当ての構成

このページでは、Game Servers のマルチクラスタの割り当てを構成する方法について説明します。マルチクラスタの割り当てを使用すると、レルム内の 1 つのクラスタから Ready 状態の GameServer をリクエストし、レルム内のどのクラスタからでも Ready 状態の GameServer を戻すことができます。マルチクラスタの割り当てを使用するには、手動の構成と設定を行って、クラスタ間で相互接続できるようにする必要があります。また、マルチクラスタの割り当てエンドポイントにも接続できるようにする必要があります。

GameServer 割り当ての詳細については、Agones の Game Server Fleet の作成のクイックスタートをご覧いただき、包括的な概要を確認してください。

始める前に

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

Agones アロケータ サービスの構成

Agones アロケータ サービスを構成して、クラスタごとに有効なサーバー TLS 証明書を設定するには、Agones Allocator サービス ガイドをご覧ください。

同じガイドを使用して、マルチクラスタ割り当てエンドポイントへの接続を許可するクラスタごとにクライアント証明書を構成します。

マルチクラスタ割り当てエンドポイントを使用する外部システムの認証に必要なため、証明書を必ず安全な場所に保管してください。

Citadel のインストール

Game Servers は、Citadel プロジェクトを使用してクラスタ間の安全な接続を容易に行うため、Game Servers に登録されている各 Google Kubernetes Engine クラスタに Citadel をインストールする必要があります。

Google Kubernetes Engine クラスタに Istio をすでにインストールしている場合は、この手順を省略できます。

Terraform ユーザーの場合は、Terraform を使用して Citadel をインストールできます。Terraform を使用して Citadel をインストールするための構成ファイル例は、GitHub で確認できます。

Citadel をインストールするには:

  1. Istio GitHub リポジトリのクローンを作成します。

    git clone -b release-1.5 https://github.com/istio/istio.git
    
    cd istio
    
  2. Istio に新しい Namespace を作成します。

    kubectl create ns istio-system
    

  3. 以下の各コマンドをコピーして実行し、Istio Helm テンプレートから Citadel YAML インストール ファイルを生成します。

    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/serviceaccount.yaml > citadel-sa.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/clusterrole.yaml > citadel-cr.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/clusterrolebinding.yaml > citadel-crb.yaml
    
    helm template install/kubernetes/helm/istio --name istio --namespace istio-system -x charts/security/templates/deployment.yaml > citadel.yaml
    

  4. 次に、以下の一連のコマンドを実行して、前の手順で生成した YAML ファイルを Google Kubernetes Engine クラスタに適用します。

    kubectl apply -f citadel-sa.yaml
    
    kubectl apply -f citadel-cr.yaml
    
    kubectl apply -f citadel-crb.yaml
    
    kubectl apply -f citadel.yaml
    
  5. Citadel が正しく動作していることを確認します。

    kubectl get pods --namespace=istio-system
    

    Citadel デプロイが単一の Pod で実行されていることを確認します。

マルチクラスタ割り当ての検証

マルチクラスタ割り当てが正常に機能していることを確認するには、Agones のマルチクラスタ割り当ての例をご覧ください。

これで、レルム内のすべてのクラスタのエンドポイントを使用して、レルム内のすべてのクラスタから GameServer を割り当てることができます。GameServer 割り当ては、ラウンドロビン スキームを使用してレルム内のすべてのクラスタ間で負荷分散されます。

次のステップ