发布 Canary 配置

本页面介绍了发布具有 Canary 阶段的新 Game Servers 配置的两个不同选项。在 Canary 阶段,您可以将新配置部署到一小部分客户。这有助于您找出潜在问题,而不会影响所有用户。

第一种方式是使用 Canary 版地区。此选项的设置较为简单,但错误的发布会影响整个地区。另一种方法是创建 Canary 部署。此选项更加灵活,但管理起来较为复杂。

准备工作

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

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

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

    1. 进入 Google Cloud 控制台。

      Google Cloud 控制台

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

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

    本地 shell

    安装 gcloud CLI

    确认您已为 Google Cloud CLI 设置所需的默认项目(否则,您稍后需要为每个命令明确指定 --project 标志):

    gcloud config list project
    

    如果无法运行以下命令来设置默认项目,请将 PROJECT_ID 替换为所需的项目 ID:

    gcloud config set project PROJECT_ID
    

    运行以下命令以验证 Google Cloud CLI 的版本。Game Servers 需要使用 306.0.0 版或更高版本的 gcloud CLI。

    gcloud version
    

    如需更新安装,请运行以下命令:

    gcloud components update
    

    curl / PowerShell

    如需将 REST API 与 curl 或 Windows PowerShell 搭配使用,请执行以下操作:

    1. 创建服务帐号。
    2. 以 JSON 文件的格式下载私钥。
    3. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

    客户端库

    您可以使用客户端库以编程方式控制 Google Cloud Game Servers。如需了解库和身份验证的使用说明,请参阅客户端库概览

验证发布的运行状况

务必在发布期间检查服务器在各个点的运行状况。您可以使用收集的数据来帮助您决定是否继续发布过程。如果健康检查发现问题,则最好暂停或取消发布。

您可以使用以下建议来验证发布过程的运行状况:

  1. 确保各个游戏服务器实例的状态为 Ready

  2. 验证 Agones 可以分配和管理 GameServer 的完整生命周期。确保主部署和 Canary 部署 GameServers 的标签与预期的 GameServerAllocation required 选择器相匹配,这样您的匹配器就不需要进行更改即可从 Canary 部署中分配。您也可以选择使用 GameServerAllocation 规范中的“首选”属性,从 Canary 版队列中优先分配。

  3. 监控并确保您部署中的任何相关游戏指标和系统指标都没有指示性能下降。

发布 Canary 版地区

借助 Game Servers,您可以在一个或多个大区中替换配置。确保 Canary 版地区中的集群位于不同的大区中。

在此示例中,“australia”大区是 Canary 版大区。

为 Canary 版使用单独大区的架构

要在 australia 大区中将 v2 设置为活跃配置,请执行以下操作:

  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 是具有替换配置的文件的路径。

Canary 版发布后的架构

确认 Canary 版地区运行状况良好后,请运行以下命令可在所有位置部署新版本:

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

发布 Canary 部署

您可以使用单独的部署来测试配置。最初,还没有专门的 Canary 部署。

单独 Canary 部署初始状态

  1. 首先,创建 Canary 部署:

    gcloud game servers deployments create canary
    

    确保 GameServerAllocation 中使用的选择器能够从主队列和 Canary 版队列中选择 GameServers,因此您当前的分配策略不需要做任何更改。

  2. 接下来,运行以下命令创建一个与非 Canary 部署中的活跃配置相同的 v1 配置:

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

    其中,fleetSpecFile 是包含队列规范的文件的路径。scalingConfigFile 是包含所有扩缩配置的文件的路径。

    我们建议设置扩缩配置,以使 Canary 版队列比常规队列小得多。

  3. 运行以下命令以更新 Canary 版发布,从而将 v1 配置发布到所有位置:

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

    验证 Canary 版队列是否运行状况良好

    初始 Canary 部署之后的架构

  4. 运行以下命令,在 Canary 部署中创建 v2 配置:

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

    其中,fleetSpecFile 是包含队列规范的文件的路径。scalingConfigFile 是包含所有扩缩配置的文件的路径。我们建议将 Canary 版队列配置为较小的大小。

  5. 运行以下命令将 v2 配置发布到 Canary 部署:

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

    验证 Canary 版队列是否运行状况良好

    新的 Canary 部署后的架构

  6. 运行以下命令,将 v2 配置发布到主部署:

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

    验证队列是否运行状况良好。在此阶段,v2 已在所有位置发布。

    部署后的架构

  7. 清理 Canary 部署。

    1. 通过运行以下命令清除 Canary 部署的发布:

      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. 通过运行以下命令移除 Canary 部署:

      gcloud game servers deployments delete canary
      

    清理后的架构

要对部署进行更精细的控制,您可以使用替换将配置发布到所选大区,然后再将配置设为默认设置。按照相同的过程逐步发布 Canary 版。

您可以通过维护正在进行的 Canary 部署来跳过前三个步骤和最后一步。对于频繁发布和定期发布,我们建议使用此方法。