🥟 Momo Store — DevOps инфраструктура проекта 🔗 https://momo.dbykovski.ru
momo-store — веб-приложение пельменной, состоящее из фронтенда (Vue.js) и бэкенда (Go).
Приложение разворачивается в Kubernetes (Yandex Cloud) и демонстрирует практику DevOps с CI/CD, IaC и GitOps.
- Облако: Yandex Cloud
- Kubernetes: Managed Service for Kubernetes
- Object Storage (S3): хранение изображений и Terraform state
- CI/CD: GitLab CI
- IaC: Terraform
- GitOps: Helm + GitLab
- Мониторинг и алертинг: Grafana, Prometheus, Alertmanager (развёрнуты через Helm)
- cert-manager — автоматическая выдача TLS-сертификатов доменное имя momo.dbykovski.ru
- Vertical Pod Autoscaler (VPA) — автоподстройка ресурсов контейнеров
| Репозиторий | Назначение |
|---|---|
| momo-store | Исходный код фронтенда и бэкенда |
| momo-store-infrastructure | Terraform-код для развёртывания инфраструктуры |
| momo-store-gitops | Helm-чарты, манифесты, мониторинг, GitOps-подход |
├── frontend/ # Vue.js-приложение (momo-frontend)
│ ├── .env.production # Переменные окружения для продакшн-сборки (API_URL)
│ ├── .gitlab-ci.yml # Пайплайн Frontend GitLab CI
│ ├── Dockerfile
│ ├── nginx.conf
│ └── README.md
├── backend/ # Go API (momo-backend)
│ ├── .gitlab-ci.yml # Пайплайн Backend GitLab CI
│ ├── Dockerfile
│ └── README.md
├── .gitlab-ci.yml # Главный модульный пайплайн GitLab CI
└── README.md # Этот файл
Пайплайн реализован в GitLab CI и разделён на модули:
- Корневой
.gitlab-ci.ymlуправляет запуском пайплайнов дляfrontendиbackend. - Каждый модуль имеет собственный пайплайн с этапами:
test → analyze → build → release → deploy → notify.
| Этап | Назначение |
|---|---|
| 🧪 test | Тестирование кода (npm test, go test) |
| 🔍 analyze | Анализ кода в SonarQube |
| 🏗️ build | Сборка Docker-образов через Kaniko |
| 🎯 release | Тегирование и публикация образов в GitLab Registry |
| 🚢 deploy | Обновление GitOps-репозитория (ручной деплой Helm-чарта) |
| 📢 notify | Отправка уведомлений в Telegram |
Логика запуска:
- Изменения в
frontend/**/*→ запуск пайплайна фронтенда - Изменения в
backend/**/*→ запуск пайплайна бэкенда - При релизе из
mainобразы тегируются и публикуются в Registry.
Оба сервиса используют multi-stage Dockerfile:
- Оптимизация по размеру и кэшированию;
- Передача версии через build-аргумент
VERSION; - Сборка через Kaniko, без Docker Daemon.
Подробнее:
Используется SemVer (MAJOR.MINOR.PATCH)
и шаблон версий из CI: 1.0.${CI_PIPELINE_ID}
Релизы из ветки main автоматически публикуют образы:
momo-frontend:<1.0.${CI_PIPELINE_ID}>momo-backend:<1.0.${CI_PIPELINE_ID}>
Инфраструктура и кластер создаются в Яндекс Облаке с помощью Terraform.
Подробнее см. репозиторий
momo-store-infrastructure.
Управление компонентами кластера и приложениями осуществляется через Helm в репозитории momo-store-gitops.
С помощью Helm-чартов разворачиваются:
- Мониторинг и алертинг: Grafana, Prometheus, Alertmanager
- cert-manager — автоматическая выдача TLS-сертификатов
- Vertical Pod Autoscaler (VPA) — автоподстройка ресурсов контейнеров
- Приложение Momo Store — фронтенд и бэкенд
Деплой приложения выполняется вручную через запуск пайплайна GitLab,
где в values.yaml указывается актуальная продовая версия образа из ветки main.
🤖 Telegram-бот и уведомления 🔗 dbykovski-momo-notifications
Для оперативного мониторинга сборок и состояния приложения используется Telegram-канал.
- Уведомления о новых сборках frontend и backend (релизы из GitLab CI);
- Уведомления от Alertmanager о событиях и инцидентах, связанных с backend в кластере Kubernetes.
- Telegram-бот интегрирован с GitLab CI и Alertmanager;
- Все уведомления автоматически публикуются в единый Telegram-канал проекта;
- Настройки бота и токен передаются через переменные окружения GitLab:
TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.
После успешного развёртывания инфраструктуры и деплоя приложения
проект доступен по адресу:
🔗 https://momo.dbykovski.ru
- Дмитрий Быковский, std-ext-019-01
- Проект по курсу «DevOps для эксплуатации и разработки»
- Ноябрь 2025