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

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

📦 Приложения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 1.1.0 - семантическое версионирование — отличный выбор для передачи объёма изменений,

  • dev , staging, qa, prod — сохранять только последнюю версию для каждого окружения очень просто,

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

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

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

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

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

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

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

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

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

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

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

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

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

    • минимально допустимое количество vCPU — 0,25 vCPU (256 единиц),

    • этот параметр нельзя изменить для существующей версии приложения, необходимо создать новую версию.

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

    • этот параметр нельзя изменить для существующей версии приложения, необходимо создать новую версию.

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

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

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

Данные образа

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

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

    • для использования стороннего реестра введите учётные данные docker вашего стороннего реестра,

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

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

  • Тег — относится к конкретному артефакту сборки (версии) вашего образа сервера,

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

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

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

Продвинутым пользователям может быть интересно Unity.

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

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

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


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

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


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

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

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

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

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


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

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


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

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


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

  • Удаление тега также приведёт к удалению связанного артефакта сборки, если в момент API-запроса.

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

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

Эти параметры можно настроить для дальнейшей кастомизации развертываний.

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

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

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

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

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

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

🌟 Перейдите на тариф «Плати по мере использования» чтобы разблокировать время развертывания 0.5 секунды по всему миру!

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

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

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

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

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

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

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

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

  • Верификации можно включить, чтобы убедиться, что ваш контейнер инициализирован прежде, чем его пометят ГОТОВ.

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

Добавьте больше портов в сопоставление портов, если ваш сервер общается по нескольким протоколам.

Средства безопасности

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

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

  • Хранение логов контейнера — чтобы экспортировать логи сервера после остановки развертывания, укажите предварительно настроенный бакет совместимый с S3 для экспорта логов контейнера,

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

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

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

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

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

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