For the complete documentation index, see llms.txt. This page is also available as Markdown.

Приложения и версии

Узнайте о версионировании и приложениях — о концепциях и лучших практиках для более глубокого понимания.

📦 Приложения

Приложения объединяют серверные проекты. Такое разделение контекста особенно полезно, если вы:

  • работаете над несколькими играми или неигровыми проектами (единый счёт),

  • работаете над внешними проектами как соразработчик (передать право собственности позже),

  • зависите от нескольких слабо связанных типов серверов с разными схемами масштабирования или требованиями.

Вы можете управлять своими приложениями в Edgegap с помощью наших плагинов, панель управления, или нашего API.

🏷️ Версии приложения

По мере разработки вашего приложения и постоянного выпуска новых сборок вам нужно хранить каждую сборку как отдельную версию, чтобы:

  • обеспечивать совместимость между вашими клиентом и сервером,

  • сравнивать различные аспекты ваших постепенных релизов (производительность, мнение пользователей),

  • тестировать несколько версий приложения одновременно (разработка, контроль качества, staging, beta).

Каждая версия приложения указывает на один артефакт сборки по вашему выбору. Несколько версий могут указывать на одну и ту же сборку.

Вы можете управлять версиями вашего приложения в Edgegap с помощью нашей панель управления, или нашего API.

Каждая версия уникально идентифицируется в своём родительском приложении по имени версии приложения. Вы можете свободно выбрать собственную систему именования. Вот несколько популярных примеров, чтобы вдохновить ваш выбор:

  • 2024.01.30-16.23.00-UTC - временные метки наглядны для хранения многих прошлых версий,

  • 1.1.0 - семантическое версионирование — отличный выбор, чтобы обозначать масштаб изменений,

  • dev , staging, qa, prod - оставлять только последнюю версию для каждой среды очень просто,

  • blue, green - версии можно использовать как псевдонимы для стратегии поэтапного обновления.

Вы можете отключить любое приложение или версию в нашем панель управления чтобы защититься от человеческих (разработческих) ошибок.

Бесплатный тариф ограничен 2 приложениями, 2 версиями и 5 ГБ хранилища Container Registry.

Комбинируйте стратегии версионирования

Часто лучшим решением является сочетание стратегий версионирования, например:

  • использование временных меток или семантического версионирования для dev-сборок, для более детального отслеживания;

  • сохраняя staging, qa и prod версии с параметрами, специфичными для среды;

  • чередуя blue и green версии как псевдонимы для обновлений без простоя матчмейкинга.

🧱 Обязательные параметры

Эти основные параметры должны быть всегда определены.

Требования к ресурсам

Помимо имени версии, для создания новой версии требуется несколько параметров:

  • vCPU - сколько виртуальных единиц CPU нужно вашему приложению для работы (1024 единицы = 1 vCPU),

    • минимально допустимый объём vCPU — 0,25 vCPU (256 единиц),

  • Память - сколько мегабайт ОЗУ нужно вашему приложению для работы (1024 МБ = 1 ГБ),

  • GPU - сколько графических процессоров нужно вашему приложению для работы,

    • эта функция пока недоступна, свяжитесь с нами, если вам интересно.

Наши серверные машины используют процессоры AMD/Intel с тактовой частотой до 3,7 ГГц, которая зависит от местоположения. Чтобы убедиться, что на вашем сервере достаточно ресурсов, свяжитесь с нами в Discord сообщества.

Сведения об образе

Эти параметры помогут нашей системе определить, какая сборка вашего сервера должна быть запущена позже:

  • Реестр - registry.edgegap.com если вы используете наш реестр контейнеров,

    • чтобы использовать сторонний реестр, введите ваши Docker-учётные данные стороннего реестра,

    • реестр служит общей службой хранения для ваших и чужих репозиториев.

  • Репозиторий образов - обозначает выделенный репозиторий вашего приложения,

  • Тег - обозначает конкретный артефакт сборки (версию) образа вашего сервера,

    • наши плагины по умолчанию копируют значения тегов из имён версий приложения,

    • вы можете просматривать локально сохранённые теги в Docker Desktop Images или с помощью CLI docker.

  • Частный реестр - если доступ к вашему репозиторию защищён (частный репозиторий), нам также понадобятся:

Устранение неполадок и FAQ

Я получил ошибку 401 Unauthorized при отправке образа моего сервера.

  • Это означает, что вы не вошли в свой реестр контейнеров. См. раздел о реестре контейнеров для инструкций по реестру контейнеров Edgegap, или соответствующий раздел для вашего провайдера реестра. Повторение последней операции не устранит ошибку.


Я получил ошибку 403 Forbidden при отправке образа моего сервера.

  • Это означает, что либо у текущего вошедшего пользователя реестра недостаточно прав (обычно для отправки нового образа), либо вы вошли не в того провайдера реестра. Попробуйте выйти и войти снова с правильным провайдером и пользователем, у которого достаточно прав. Повторение последней операции не устранит ошибку.


В чём разница между реестром, репозиторием и проектом?

  • Представьте реестр как складское хранилище, репозиторий как складскую ячейку, а проект как номер ячейки. Обычно каждый реестр включает множество репозиториев: некоторые публичные, некоторые частные для организаций и пользователей.

  • Пример реестра: registry.edgegap.com .

  • Пример репозитория: registry.edgegap.com/my-edgegap-org/my-game-server.

  • Пример имени проекта: my-game-server .


При отправке новых тегов / сборок образов мои изменения не перезагружаются корректно.

  • Убедитесь, что каждый раз при пересборке вы отправляете с новым тегом образа. Внутренняя система кэширования Edgegap использует имена тегов, и если вы перезапишете значение тега (например, latest), она не распознает новую сборку.


Могу ли я помечать один и тот же артефакт сборки несколько раз?

  • Да, вы можете без проблем присваивать одному и тому же артефакту несколько тегов, используя их как несколько псевдонимов одной и той же сборки. Продолжайте читать, чтобы узнать, как позже удалить теги.


Что происходит, когда я удаляю тег? Почему я не могу удалить конкретный артефакт по хэшу?

  • Чтобы освободить место в реестре, вы должны удалить все теги, связанные с конкретным артефактом.

  • Из-за стандартов Docker API и чтобы обеспечить наилучший пользовательский опыт, мы предоставляем только интерфейс для удаления тегов. См. пункт выше об удалении артефактов сборки.

⚙️ Необязательные параметры

Эти параметры можно настроить, чтобы дополнительно адаптировать ваши развёртывания.

Внедряемые переменные

Пользовательские переменные окружения будут внедрены для всех развёртываний этой версии:

  • типичные примеры: аргументы движка, секреты и конечные точки сторонних сервисов,

  • см. Внедряемые переменные чтобы понять различные способы внедрения переменных окружения в зависимости от контекста развёртывания, в дополнение к переменным версии приложения,

  • каждая переменная окружения может содержать до 4 КБ (килобайт) строковых данных.

Активное кэширование

🌟 Перейдите на тариф Pay as You Go чтобы открыть время развёртывания в 0,5 секунды по всему миру!

Ускорьте развёртывания и запускайте серверы за секунды, без необходимости в резервных серверах. Образ сервера, связанный с этой версией приложения, будет автоматически предварительно загружен во всех наших локациях по всему миру.

Кэширование начнёт работать в полную силу, когда уровень кэширования вашей версии приложения достигнет 🟢 Good.

Образ также пассивно кэшируется при развёртывании — только на хост-машине, где оно было развёрнуто.

Сопоставление портов

Каждому серверу требуется как минимум один порт, чтобы принимать входящие соединения клиентов:

  • Порт значение относится к внутреннему порту значению, обычно из вашей интеграции netcode,

  • Протокол будет зависеть от транспортного протокола вашей интеграции netcode,

  • Имя — это читаемый человеком идентификатор для ваших нужд, может совпадать с портом,

  • Проверки можно включить, чтобы убедиться, что ваш контейнер инициализирован до пометки READY.

Хотя внутренние порты для серверного процесса задаются как часть версии приложения, внешние порты назначаются случайным образом после создания развёртываниячтобы потенциальный злоумышленник (хакер) был замедлен и обнаружен до того, как сможет нанести ущерб.

Добавьте больше портов в сопоставление портов, если ваш сервер использует несколько протоколов.

Предохранительные меры

Эти параметры помогают в различных крайних случаях и при общей диагностике сервера:

  • Временные ограничения - эти функции могут помочь вам управлять жизненным циклом ресурсов развёртываний:

  • Политика перезапуска процесса - управляет поведением развёртывания, когда процесс вашего сервера останавливается.

    • Всегда перезапускать (по умолчанию) — перезапустит при успешном коде выхода (0) и при любом аварийном завершении.

    • Никогда не перезапускать (рекомендуется) — развёртывание останавливается при успешных и аварийных кодах выхода.

    • Перезапускать при сбое — перезапускать только при кодах выхода с ошибкой, полезно для постоянных серверов.

Бесплатный тариф ограничен 2 приложениями, 2 версиями и 5 ГБ хранилища Container Registry.

Хранение журналов

Чтобы экспортировать журналы сервера после остановки развёртывания, настройте Хранилище конечной точки с использованием S3-ведра.

⏩ Согласованность обновлений

Чтобы убедиться, что ни один из параметров не изменится при создании новой версии приложения через наш панель управления, мы рекомендуем использовать Дублировать функцию в правом верхнем углу страницы панели управления предыдущей версии приложения. При дублировании вы можете изменить любые параметры перед сохранением.

См. Пошаговые обновления матчмейкера для дальнейшей автоматизации релизов.

Последнее обновление

Это было полезно?