Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dbykovski/momo-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

48 Commits

Repository files navigation

🥟 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-подход
Ссылки на репозитории
https://gitlab.praktikum-services.ru/std-ext-019-01/momo-store
https://gitlab.praktikum-services.ru/std-ext-019-01/momo-store-infrastructure
https://gitlab.praktikum-services.ru/std-ext-019-01/momo-store-gitops

🗂️ Структура репозитория momo-store

├── 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 # Этот файл

⚙️ CI/CD Overview

Пайплайн реализован в 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.

🐳 Docker

Оба сервиса используют 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.


🧩 Развёртывание через GitOps

Управление компонентами кластера и приложениями осуществляется через 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

About

Дипломный проект. Frontend, Backend. Яндекс. Практикум по курсу DevOps для эксплуатации и разработки: расширенная версия

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /