Приложения и версии
Узнайте о версионировании и приложениях — концепции и лучшие практики для более глубокого понимания.
📦 Приложения
Приложения инкапсулируют серверные проекты. Такое разделение контекста особенно полезно, если вы:
работаете над несколькими играми или неигровыми проектами (объединённая оплата),
работаете над внешними проектами в качестве со-разработчика (позже передать право собственности),
зависите от нескольких слабо связанных типов серверов с разными паттернами масштабирования или требованиями.
Вы можете управлять своими приложениями на Edgegap, используя наши плагины, панель управления, или наш API.
Изучите наш справочник API Приложений, или прочитайте больше о нашем Management API.
🏷️ Версии приложения
По мере разработки приложения и непрерывного выпуска новых сборок вам потребуется сохранять каждую сборку как отдельную версию, чтобы:
поддерживать совместимость между вашими клиентами и сервером,
сравнивать различные аспекты ваших инкрементных релизов (производительность, отклик пользователей),
тестировать несколько версий приложения одновременно (разработка, обеспечение качества, staging, бета).
Каждая версия приложения указывает на один выбранный артефакт сборки. Несколько версий могут указывать на одну и ту же сборку.
Вы можете управлять версиями приложения на Edgegap, используя наш панель управления, или наш API.
Изучите наш справочник API версий приложения, или прочитать больше о API.
Каждая версия однозначно идентифицируется в пределах родительского приложения по названию версии приложения. Вы свободны выбирать собственную схему именования. Вот несколько популярных примеров, которые могут вдохновить ваш выбор:
2024.01.30-16.23.00-UTC- метки времени прозрачны и удобны для хранения множества прошлых версий,1.1.0- семантическое версионирование — отличный выбор для передачи объёма изменений,dev,staging,qa,prod- хранение только последней версии для каждой среды очень просто,blue,green- версии могут использоваться как алиасы для стратегии развёртывания с поэтапным обновлением.
Вы можете изменить подход в любой момент, если поддерживаете совместимость клиент/сервер.
Вы можете отключить любое приложение или версию в нашем панель управления на защите от человеческих (разработческих) ошибок.
Бесплатный тариф ограничен 2 приложениями, 2 версиями и 5 ГБ хранилища в Registry контейнеров.
Комбинируйте стратегии версионирования
Часто лучшим решением является сочетание стратегий версионирования, например:
использование меток времени или семантического версионирования для dev-сборок для более детального отслеживания;
хранение
staging,qaиprodверсий с параметрами, специфичными для окружения;чередование
blueиgreenверсий как алиасов для обновлений без времени простоя матчмейкинга.
🧱 Обязательные параметры
Эти базовые параметры должны быть всегда определены.
Требования к ресурсам
В дополнение к названию версии, для создания новой версии требуется несколько параметров:
vCPU - сколько виртуальных CPU-единиц нужно вашему приложению для работы (1024 единицы = 1 vCPU),
минимально допустимое количество vCPU — 0,25 vCPU (256 единиц),
этот параметр нельзя изменить у существующей версии приложения, необходимо создать новую версию.
Память - сколько мегабайт оперативной памяти нужно вашему приложению для работы (1024 МБ = 1 ГБ),
этот параметр нельзя изменить у существующей версии приложения, необходимо создать новую версию.
GPU - сколько графических процессоров (GPU) нужно вашему приложению для работы,
эта функция ещё недоступна, пожалуйста, свяжитесь с нами, если вы заинтересованы.
Версии автоматически включают ОЗУ в соотношении 2:1 ОЗУ-vCPU, позволяя до 512 МБ ОЗУ на каждые 0,25 vCPU.
Наши серверные машины используют CPU AMD/Intel с тактовой частотой 2.4–3.2 ГГц, варьирующейся в зависимости от локации. Чтобы гарантировать, что вашему серверу доступно достаточно ресурсов, свяжитесь через Discord сообщества.
Детали образа
Эти параметры помогут нашей системе решить, какая сборка вашего сервера должна быть запущена позже:
Реестр -
registry.edgegap.comесли вы используете наш Registry контейнеров,чтобы использовать сторонний реестр, введите учетные данные docker вашего стороннего реестра,
реестр служит совместным сервисом хранения для ваших и других репозиториев пользователей.
Репозиторий образа - относится к выделенному репозиторию вашего приложения,
найдите все ваши репозитории на нашей странице Registry контейнеров панели управления,
каждый репозиторий может содержать несколько тегов вашего образа сервера.
Тег - относится к конкретному артефакту сборки (версии) вашего образа сервера,
наши плагины по умолчанию копируют значения тегов из названий версий приложения,
вы можете просматривать локально сохранённые теги в Docker Desktop Images или с помощью docker CLI.
❌ НЕ НАДО — перезаписывать существующие теги или использовать latest тег чтобы избежать развёртывания устаревших (кешированных) сборок.
✅ ДЕЛАЙТЕ — всегда увеличивайте тег версии чтобы развернуть нужную сборку и предотвратить проблемы с релизом.
Приватный реестр - если доступ к вашему репозиторию защищён (приватный репозиторий), нам также понадобятся:
Токен пользователя - программное имя пользователя для доступа к реестру,
Токен пароля - программный пароль для доступа к реестру,
для Edgegap Registry контейнеров, вы можете скопировать эти значения из нашей панели управления,
они не требуются для публичных репозиториев.
Устранение неполадок и FAQ
Я получил ошибку 401 Unauthorized при отправке (push) образа сервера.
Это означает, что вы не вошли в свой контейнерный реестр. См. Container Registry для инструкций по Edgegap Container Registry, или эквивалентные инструкции для вашего провайдера реестра. Повторение последней операции не решит ошибку.
Я получил ошибку 403 Forbidden при отправке (push) образа сервера.
Это означает, что либо текущий пользователь, вошедший в реестр, не имеет достаточных прав (обычно для отправки нового образа), либо вы вошли в неверный провайдер реестра. Попробуйте выйти и войти заново с правильным провайдером и пользователем с достаточными правами. Повторение последней операции не решит ошибку.
В чём разница между реестром, репозиторием и проектом?
Думайте о реестре как о складе, о репозитории как об отдельном складском блоке, а о проекте как о номере этого блока. Каждый реестр обычно включает множество репозиториев — некоторые публичные, некоторые приватные для организаций и пользователей.
Пример реестра:
registry.edgegap.com.Пример репозитория:
registry.edgegap.com/my-edgegap-org/my-game-server.Пример названия проекта:
my-game-server.
При отправке новых тегов/сборок мои изменения не подхватываются корректно.
Убедитесь, что каждый раз при пересборке вы отправляете с новым тегом образа. Внутренняя система кэширования Edgegap использует имена тегов, и если вы перезапишете значение тега (например,
latest), она не обнаружит новую сборку.
Могу ли я пометить один и тот же артефакт сборки несколькими тегами?
Да, вы можете пометить один и тот же артефакт несколько раз без проблем — это будет служить множественными алиасами для одной и той же сборки. Продолжайте чтение, чтобы узнать, как потом удалить теги.
Что происходит при удалении тега? Почему я не могу удалить конкретный артефакт по хэшу?
Удаление тега также приведёт к удалению связанного артефакта сборки, если в момент API-запроса.
у артефакта не осталось других связанных тегов. В соответствии со стандартами Docker API и для обеспечения наилучшего пользовательского опыта мы предоставляем интерфейс только для удаления тегов. См. пункт выше относительно удаления артефактов сборки.
⚙️ Необязательные параметры
Эти параметры можно настроить для дальнейшей кастомизации ваших развёртываний.
Внедряемые переменные
Пользовательские переменные окружения будут внедрены для всех развёртываний этой версии:
распространённые примеры включают: аргументы движка, сторонние секреты и конечные точки,
см. Состояние сервера может быть утрачено для понимания различных способов внедрения переменных окружения в зависимости от контекста развёртывания, помимо переменных версии приложения,
каждая переменная окружения может содержать до 4 КБ (килобайт) строковых данных.
Обязательно установите ваши чувствительные переменные (секреты, токены) как скрытые для повышенной безопасности!
Активное кэширование
🌟 Обновитесь до тарифа «Плати по мере использования» чтобы разблокировать 0.5-секундное время развёртывания по всему миру!
Ускорьте развёртывания и запускайте серверы за секунды, без необходимости в резервных серверах. Образ сервера, связанный с этой версией приложения, будет автоматически предварительно загружен во все наши мировые локации.
Кэширование полностью вступит в силу, когда уровень кэширования вашей версии приложения достигнет 🟢 Хорошо.
Несколько версий приложения могут повторно использовать один и тот же тег образа. Включение кэша для одной версии автоматически включит его для всех версий, связанных с тем же тегом образа,что облегчает параметризованные развёртывания.
Образ также пассивно кэшируется при развёртывании, только на хост-машине, где он был развёрнут.
Образы удаляются из кэша, если они не разворачиваются в течение 72 последовательных часов.
Проброс портов
Каждому серверу требуется как минимум один порт, чтобы принимать входящие соединения клиентов:
Порт значение относится к внутреннему порту обычно используемому вашей интеграцией сетевого кода,
Протокол будет зависеть от транспорта вашей интеграции сетевого кода,
Имя является человекочитаемым идентификатором для ваших нужд, может совпадать с Портом,
Проверки могут быть включены, чтобы убедиться, что ваш контейнер инициализирован перед пометкой READY.
Большинству игр достаточно добавить один UDP-порт для порта 7777.
В то время как внутренние порты для серверного процесса определяются как часть версии приложения, внешние порты назначаются случайным образом при создании развёртывания, чтобы потенциальный злоумышленник (хакер) был замедлен и обнаружен до того, как сможет причинить вред.

Добавьте больше портов в проброс портов, если ваш сервер общается по нескольким протоколам.
Защитные ограждения
Эти параметры помогают в различных крайних случаях и общем устранении неполадок сервера:
Ограничения по времени - эти функции могут помочь вам управлять жизненным циклом ресурсов развёртываний:
Макс. длительность игры можно настроить для корректного завершения работы серверов через заданный период, или настроить
-1с помощью create/edit API версии приложения для Сохранение состояния с помощью Приватные флоты.Максимальное время на развёртывание может помочь очистить развёртывания, которые занимают слишком много времени для запуска.
Хранение логов контейнера - чтобы экспортировать логи сервера после остановки развёртывания, укажите заранее настроенное S3-совместимое хранилище для экспорта логов контейнера,
см. Хранилище конечных точек для деталей по настройке и использованию.
Логи версий без внешнего Хранилища будут удалены при завершении развёртывания.
Бесплатный тариф ограничен 2 приложениями, 2 версиями и 5 ГБ хранилища в Registry контейнеров.
⏩ Согласованность обновлений
Чтобы убедиться, что ни один из параметров не изменится при создании новой версии приложения через наш панель управления, мы рекомендуем использовать Дублирование функцию в правом верхнем углу страницы панели управления предыдущей версии приложения. При дублировании вы можете изменить любые параметры перед сохранением.
Дублирование или редактирование версий приложения не требует пересборки вашего образа сервера.
См. Поэтапные обновления Matchmaker для дальнейшей автоматизации релизов.
Последнее обновление
Это было полезно?

