应用与版本

了解版本控制和应用程序——概念与最佳实践,以便深入理解。

📦 应用程序

应用程序封装服务器项目。如果你:

  • 同时开发多个游戏或非游戏项目(统一结算),

  • 作为共同开发者参与外部项目(以后可转移所有权),

  • 依赖多种松耦合的服务器类型且具有不同的扩展模式或需求,

你可以使用我们的插件在 Edgegap 上管理你的应用程序, 仪表盘,或使用我们的 API。

🏷️ 应用版本

随着你开发应用并持续产出新构建,你需要将每个构建作为独立版本存储以便:

  • 维护兼容性 在客户端和服务器之间,

  • 比较你的各种 增量发布 (性能、用户反馈),

  • 测试 多个应用版本同时运行 (开发、质量保证、暂存、测试版)。

每个应用版本指向你选择的一个构建工件。多个版本可以指向相同的构建。

你可以使用我们的在 Edgegap 上管理应用版本, 仪表盘,或使用我们的 API。

每个版本在其父应用内通过以下方式唯一标识 应用版本名称。你可以自由决定自己的命名约定。这里有一些常见示例供你参考:

  • 2024.01.30-16.23.00-UTC - 时间戳便于保留许多历史版本,

  • 1.1.0 - 语义版本控制 是表达变更范围的很好选择,

  • dev , staging, qa, prod - 每个环境只保留最新版本会非常简单,

  • blue, green - 版本可以用作滚动更新发布策略的别名。

你可以在我们的中禁用任何应用或版本, 仪表盘 以便 防范人为(开发)错误.

免费套餐限制为 2 个应用、2 个版本和 5 GB 的容器注册表存储。

结合版本策略

通常,最佳方案是混合多种版本策略,例如:

  • 对开发构建使用时间戳或语义版本控制,以便更细粒度跟踪;

  • 保留 staging, qaprod 具有环境特定参数的版本;

  • 交替使用 bluegreen 版本作为 零匹配停机时间更新的别名.

🧱 必填参数

这些基础参数必须始终定义。

资源需求

除了 版本名称之外,创建新版本还需要若干参数:

  • vCPU - 你的应用运行所需的虚拟 CPU 单位数量(1024 单位 = 1 vCPU),

    • 允许的最小 vCPU 为 0.25 vCPU(256 单位),

    • 此设置不能在现有应用版本上编辑,必须创建新版本。

  • 内存 - 你的应用运行所需的 RAM 大小(1024MB = 1GB),

    • 此设置不能在现有应用版本上编辑,必须创建新版本。

  • GPU - 你的应用运行所需的图形处理单元数量,

    • 此功能尚不可用,如有兴趣请联系我们。

我们的服务器机器使用 AMD/Intel CPU,主频 2.4 - 3.2 GHz,因地区而异。为确保你的服务器有足够资源,请在 社区 Discord.

镜像详情

这些参数将帮助我们的系统决定之后应启动你的服务器的哪个构建:

  • 注册表 - registry.edgegap.com 如果你使用我们的 容器注册表,

    • 要使用第三方注册表,请输入你的第三方注册表 Docker 凭证,

    • 注册表作为你和其他用户仓库的共享存储服务。

  • 镜像仓库 - 指你的应用专用仓库,

  • 每个仓库可能包含你的服务器镜像的多个标签。 标签

    • - 指服务器镜像的特定构建工件(版本),

    • 我们的插件默认会将标签值从应用版本名称复制过来,

  • 以部署预期的构建并防止发布问题。 私有注册表

    • - 如果你的仓库访问受保护(私有仓库),我们还需要: 用户名令牌

    • - 你的注册表程序化访问用户名, 密码令牌

    • - 你的注册表程序化访问密码, 容器注册表对于 Edgegap ,你可以,

    • 从我们的仪表盘复制这些值,

公共仓库则不需要这些。 Unity.

高级用户可能对以下内容感兴趣:

疑难解答与常见问题 我在推送服务器镜像时收到错误 401 未经授权

  • 这意味着你尚未登录到你的容器注册表。参见容器注册表中的 Edgegap 容器注册表说明或你所用注册表提供商的相应说明。重复上一次操作不会解决该错误。


疑难解答与常见问题 403 禁止访问 401 未经授权

  • 这意味着当前登录的注册表用户权限不足(通常是推送新镜像的权限),或你登录了错误的注册表提供商。尝试登出并以具有足够权限的正确提供商和用户重新登录。重复上一次操作不会解决该错误。


注册表、仓库和项目之间有什么区别?

  • 可以把注册表想象为存储设施,仓库为存储单元,项目为存储单元编号。每个注册表通常包含许多仓库,有些是公开的,有些对组织和用户私有。

  • 示例注册表: registry.edgegap.com .

  • 示例仓库: registry.edgegap.com/my-edgegap-org/my-game-server.

  • 示例项目名称: my-game-server .


在推送新镜像标签/构建时我的更改没有正确加载。

  • 确保每次重建时使用新的镜像标签进行推送。Edgegap 的内部缓存系统使用标签名称,如果你覆盖了标签值(例如, 切勿 - 覆盖已有标签或使用)它将无法识别新构建。


我可以为同一构建工件打多次标签吗?

  • 可以,你可以为同一工件打多个标签而不会有问题,作为指向同一构建的多个别名。继续阅读以了解如何稍后移除标签。


删除标签会发生什么?为什么我无法使用哈希删除特定工件?

  • 删除标签也会导致关联的构建工件被删除,前提是在 API 请求.

  • 时该工件没有其他关联标签。

根据 Docker API 标准并为确保最佳用户体验,我们仅提供删除标签的接口。请参阅上文关于删除构建工件的说明。

⚙️ 可选参数

这些参数可配置以进一步自定义你的部署。

注入变量

以增强安全性!

🌟 主动缓存 升级到按使用付费等级

以解锁全球 0.5 秒部署时间! 加速部署并在数秒内启动服务器,无需预备服务器。

与此应用版本关联的服务器镜像将自动在我们全球所有地点预加载。

从而使参数化部署变得容易。

如果镜像连续 72 小时未被部署,则会从缓存中移除。

端口映射

  • 每个服务器至少需要一个端口以接受传入客户端连接: 端口 值指的是 内部端口

  • 值,通常来自你的网络代码集成, 协议

  • 将取决于你的网络代码集成传输, 名称

  • 是供你识别的人类可读标识,可与端口相同, 验证

大多数游戏只需为端口添加单个 UDP 端口映射 虽然服务器进程的内部端口作为应用版本的一部分被定义,外部端口在创建部署后会被随机分配,

以便在潜在的恶意方(黑客)能够造成损害之前减缓并检测其行为。

如果你的服务器通过多种协议通信,请在端口映射中添加更多端口。

安全护栏

免费套餐限制为 2 个应用、2 个版本和 5 GB 的容器注册表存储。

没有外部存储的版本在部署终止时其日志将被删除。

⏩ 更新一致性 仪表盘为了确保在你通过我们的创建新应用版本时没有参数发生变化, 我们建议使用 “复制”

复制或编辑你的应用版本不需要重建你的服务器镜像。 请参阅 匹配器滚动更新 以获取更多发布自动化的信息.

最后更新于

这有帮助吗?