Как мы сделали kiosk-игру «Спасение Контейнерленда» для Yandex Cloud

Как мы сделали kiosk-игру «Спасение Контейнерленда» для Yandex Cloud
На конференции Yandex Scale у Yandex Cloud был физический стенд Yandex Managed Service for Kubernetes®. Вместо статичной презентации посетители получили игру: стать K8sKeeper, починить кластер и победить Chaos Monster - монстра из неправильных replicas, потерянных секретов и CrashLoopBackOff.
Мы в Астар АйТи разработали саму игру. Визуальную концепцию и UX стенда делала дизайн-студия Crauch, в производстве участвовала компания Hounds. Заказчик - Yandex Cloud, один из крупнейших корпоративных клиентов в нашем портфолио.
Игра доступна онлайн: save-containerland.ru. Кейс в портфолио: «Спасение Контейнерленда».
Зачем игре место на корпоративном стенде
Kubernetes сложно «продать» за 30 секунд. Replicas, probes, Secrets и podAntiAffinity - абстракции, которые легко пролистать в слайде. Игра решает другую задачу: человек сам чинит сломанный манифест и видит результат. Ошибка - Chaos Monster снова атакует. Правильный YAML - «суперсила» и следующий уровень.
Для Yandex Cloud это формат, который:
- запоминается лучше, чем брошюра;
- объясняет ценность Managed Kubernetes через практику;
- работает и на киоске, и в браузере после конференции;
- соответствует tech-бренду: тёмный cyber-UI, typewriter-текст, неоновые акценты.
Геймплей: 5 миссий по реальному K8s
Сюжет построен вокруг пяти типовых проблем кластера - каждая с broken YAML, который нужно исправить в Monaco Editor:
- Replicas и strategy - сервис держится на одном поде; нужны реплики и RollingUpdate вместо Recreate.
- Secrets - пароли к БД исчезли; подключить Secret через envFrom или secretKeyRef.
- Probes - под «жив», но Kubernetes не понимает его состояние; добавить liveness и readiness на /healthz:8080.
- Security - контейнер с privileged и hostNetwork; убрать опасные привилегии и capabilities.
- High availability - все поды на одной ноде; настроить podAntiAffinity по hostname.
После каждой миссии - «YAML Oracle» с подсказкой и награда в духе RPG. Финал: Chaos Monster повержен, Контейнерленд спасён.
Техническая реализация
Игра - full-screen web-приложение, рассчитанное на kiosk и обычный браузер:
- Frontend: React 19, React Router 7, Tailwind CSS 4, Nanostores, GSAP/Motion для анимаций, react-hotkeys-hook (Enter, Esc).
- Редактор: Monaco Editor + monaco-yaml - тот же класс инструментов, что в IDE и облачных консолях.
- Backend: Bun, парсинг YAML через js-yaml, отдельные validators на каждое задание - ответ нельзя подделать на клиенте.
- Тесты: unit-тесты validators и integration-тесты API - критично для публичного стенда без возможности останавливать показ ради ручной проверки.
- Kiosk-режим: screensaver, intro-слои (intro_text, intro_universe, briefing), полноэкранный UI без отвлекающих элементов.
Роль команд в проекте
- Yandex Cloud - заказчик, бренд и продуктовый контекст Managed Kubernetes.
- Crauch - дизайн-концепция и визуальный язык стенда.
- Hounds - участие в реализации физического стенда.
- Астар АйТи - разработка игры: геймплей, YAML-редактор, backend-валидация, kiosk-логика, деплой.
Что получилось на стенде
На стенде посетитель запускал игру на сенсорном киоске, исправлял манифесты и сразу видел результат проверки. Один и тот же сценарий объяснял отказоустойчивость, секреты и безопасность подов без отдельной презентации сотрудника стенда.
После Yandex Scale игра осталась на save-containerland.ru - можно пройти онлайн или показать как референс формата «edutainment для enterprise».
Вывод
На стенде Yandex Cloud DevOps-темы объяснялись через игру: посетитель правил YAML и сразу видел результат. Тот же формат подходит для конференций, стендов и обучения.
Корпоративный интерактив · кейс проекта · GameDev на заказ vs продуктовая студия · Получить предварительную оценку интерактивного проекта
Нужна предварительная оценка похожего проекта?
Опишите задачу - подготовим диапазон бюджета и сроков или предложим следующий шаг.
Оставьте контакт - перезвоним
Достаточно телефона, email или Telegram. Описание задачи, бюджет и сроки - по желанию.