配置多集群分配

本页面介绍了如何为 Game Servers 配置多集群分配。通过多集群分配,您可以从大区内的一个集群请求 Ready 状态下的 GameServer,然后从该大区内任何集群取回 Ready 状态下的 GameServer。多集群分配需要手动配置和设置,以便集群可以相互连接并同时连接到多集群分配端点。

如需详细了解 GameServer 分配,请参阅 Agones 的创建游戏服务器队列快速入门,以查看综合概览。

准备工作

开始之前,我们建议您先了解 Game Servers 概览中的关键概念。请确保您已执行以下任务:

  • 确保您已启用 Game Services API。
  • 启用 Game Services API
  • 选择安装了 Cloud SDK 的 shell,或使用 API 客户端:
  • Cloud Shell

    如需启动 Cloud Shell,请执行以下步骤:

    1. 转到 Google Cloud Console。

      Google Cloud Console

    2. 在控制台的右上角,点击激活 Cloud Shell 按钮:

    控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud 命令。

    本地 shell

    如需安装 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 分配器服务指南。

使用同一指南为允许连接到多集群分配端点的每个集群配置客户端证书。

请务必将证书存储在一个安全位置,因为在您对使用多集群分配端点的任何外部系统进行身份验证时需要这些证书。

安装 Citadel

Game Servers 使用 Citadel 项目来促进集群之间的安全连接,因此您必须在注册到 Game Servers 的每个 Google Kubernetes Engine 集群上安装它。

如果您已在 Google Kubernetes Engine 集群上安装了 Istio,则可以跳过此步骤。

如果您是 Terraform 用户,则可以使用 Terraform 安装 Citadel。您可以在 GitHub 上查看使用 Terraform 安装 Citadel 的示例配置文件。

如需安装 Citadel,请执行以下操作:

  1. 克隆 Istio GitHub 代码库:

    git clone -b release-1.5 https://github.com/istio/istio.git
    
    cd istio
    
  2. 为 Istio 创建新命名空间:

    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 中运行。

验证多集群分配

Game Servers 部署发布后,请确保 Game Servers 在您的大区内某个集群中处于就绪状态

要验证多集群分配是否正常运行,请查看 Agones 多集群分配示例

大区内的任何集群上的端点现在都可用于从大区中的任何集群中分配 GameServerGameServer 分配使用轮询机制,在整个大区内的所有集群之间实现负载平衡。

后续步骤