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

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

📦 Приложения

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

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

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

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

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

circle-check

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

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

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

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

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

circle-info

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

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

circle-check

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

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

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

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

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

circle-check
circle-info

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

circle-info

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

circle-check
circle-info

Наши серверные машины используют CPU AMD/Intel с тактовой частотой 2.4–3.2 ГГц, варьирующейся в зависимости от локации. Чтобы гарантировать, что вашему серверу доступно достаточно ресурсов, свяжитесь через Discord сообществаarrow-up-right.

Детали образа

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

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

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

    • реестр служит совместным сервисом хранения для ваших и других репозиториев пользователей.

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

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

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

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

triangle-exclamation
chevron-rightУстранение неполадок и FAQhashtag

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

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


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

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


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

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

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

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

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


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

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


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

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


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

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

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

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

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

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

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

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

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

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

circle-exclamation

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

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

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

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

circle-check
circle-info

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

circle-exclamation

Проброс портов

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

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

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

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

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

circle-check

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

circle-info

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

Защитные ограждения

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

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

    • Макс. длительность игры можно настроить для корректного завершения работы серверов через заданный период, или настроить -1 с помощью create/edit API версии приложения для Сохранение состояния с помощью Приватные флоты.

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

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

circle-exclamation
circle-info

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

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

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

circle-check
circle-info

См. Поэтапные обновления Matchmakerarrow-up-right для дальнейшей автоматизации релизов.

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

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