CMS Labs

About

CMS Labs — это модульная система для автоматизации проведения лабораторных работ по сетевым технологиям (Cisco, ContainerLab).

Система предоставляет конструктор для распределения студентов по курсам и лабораторным стендам, интегрируется с LMS ( например, Moodle) через протокол LTI 1.3 и обеспечивает единый вход (SSO) через OpenID.

Tech Stack

  • Backend: Go (Fiber), монорепа с модулями (LTI, OpenID, админ-панель)
  • Frontend: Встраивание и единая панель
  • Инфраструктура: Kubernetes, для развертывания лабораторных стендов используется ContainerLab | old PNETLab.
  • Базы данных: MySQL (legacy)

Demo

Можешь перейти на сайт https://cms-lab.gubanov.site/login и получить доступ к временному решению задач через вход student:student.

Затем перейди на страницу с прямым доступом к курсу

Podlodka Go Crew Let’s GoConf

Product

Тезисы

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

Проблема и мотивация

  • Физические наборы оборудования:
    • Персональная топология для каждого студента → низкое разнообразие, масштабирование ограничено количеством железа.
    • Преподаватель вынужден быть ментором, админом и «поваром выдачи» оборудования.
    • Высокая стоимость, логистика, износ.
  • Цель: сделать масштабируемую, автоматизированную песочницу сетевых окружений для курсов и стажировок.

Путь эволюции

  1. Попытки оптимизации с физическими устройствами → автоматизация выдачи топологий, управление через SSH, Terraform.
  2. Переход к гибридным решениям (PNETLab):
    • Плюсы: поддержка QEMU/Docker/IoShare2 и готовых лабораторий, удобный веб-интерфейс.
    • Минусы: вопросы безопасности, закрытость/обфускация, VM-ориентированность, управление портами через БД.
  3. Разработка CMS-LABS и использование репозитория образов (labhub.eu.org) + утилита ishare2-cli.
  4. Containerlab + Kubernetes (Clabernetes) — пробовали, но столкнулись с нестабильностью и избыточностью управляющих слоёв.
  5. Переписывание на Podman, отказ от Kubernetes/containerd-подхода для упрощения.

Инструменты и сравнение

  • Эмуляция/симуляция: GNS3, Packet Tracer.
  • Платформы/коммерческие решения: PNETLab, Cisco CML, NDG Netlab+.
  • Рекомендуемые/используемые для облачных labs: Containerlab, Container images (OCI), ishare2.
  • Таблица (кратко):
    • GNS3 — полная эмуляция, бесплатный.
    • PNETLab — гибридная, много готовых лаб, но с ограничениями безопасности/лицензирования.
    • Containerlab — платформа для запуска сетевых образов в контейнерах/OCI — удобна для масштабирования и автоматизации.

Образы и источники

  • Типы образов: QEMU (полные VM), Docker (контейнеры), Bin/IOL, Dynamips, ISO, OCI.
  • Примеры официальных образов:
    • Arista — VMDK (cEOS/vEOS), OCI (~600 МБ).
    • CheckPoint — QCOW2 (4–9 ГБ).
    • MikroTik — ISO (~65 МБ).
    • Nokia SR Linux — OCI (~4 ГБ).
  • Утилита: github.com/ishare2-org/ishare2-cli — управление образами, загрузка на labhub.

Containerlab — оценка

Плюсы:

  • Персональная топология для каждого студента.
  • Оборудование в OCI-образах.
  • Понятный интерфейс для работы с «маршрутизаторами».
  • Легче администрировать и масштабировать кластер.
  • Поддержка сообщества и примеры лабораторных работ.

Минусы/ограничения:

  • Ранее попытка интеграции с Kubernetes (матрёшка) вызвала нестабильность и избыточность.
  • Требуется аккуратная организация окружения и менеджмента образов.

Итоговые выводы и рекомендации

  • Для образовательных сетевых лабораторий оптимально переходить на виртуальные/контейнерные образы (OCI) и Containerlab.
  • Избегать сложных Kubernetes-обёрток, если цель — простота, надежность и предсказуемость (в докладе — переход на Podman).
  • Использовать ishare2 + централизованный репозиторий образов (labhub) для управления образами разных вендоров.
  • Автоматизировать выдачу лабораторий (Terraform/скрипты/Containerlab) и интегрировать аутентификацию (OpenID) для упрощения администрирования.

Ссылки и полезные ресурсы (упомянутые)