lab2_cicd_monitoring
Описание
Языки
- Shell57,7%
- Python19,2%
- Makefile11,4%
- JavaScript8,8%
- Dockerfile2,9%
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
README.md
🚀 Lab2: CI/CD и Мониторинг
Лабораторная работа №2: Полноценный CI/CD пайплайн с мониторингом
📋 Обзор проекта
Учебный проект демонстрирует современный подход к CI/CD с использованием:
- Python Flask приложение
- Docker контейнеризация
- GitVerse CI/CD (GitLab CI синтаксис)
- Prometheus + Grafana мониторинг
- Self-hosted runner для полноценной работы
🏗️ Архитектура
Двух-ВМ архитектура (для полноценной лабораторной)
ВМ1 (Приложение + Агенты):
├── Flask App (5000) - деплоится через CI/CD
├── Node Exporter (9100) - метрики хоста
└── Cadvisor (8080) - метрики контейнеров
ВМ2 (CI/CD Runner + Мониторинг):
├── GitVerse Runner - выполнение CI/CD
├── Prometheus (9090) - сбор метрик
└── Grafana (3000) - визуализация
Локальная архитектура (для тестирования)
Локальная машина:
├── Flask App (5000) - основное приложение
├── Node Exporter (9100) - метрики хоста
├── Cadvisor (8080) - метрики контейнеров
├── Prometheus (9090) - сбор метрик
└── Grafana (3000) - визуализация
🚀 Быстрый старт
Для полноценной лабораторной (2 ВМ)
Используйте подробное руководство: DEPLOYMENT_GUIDE.md
Этот гайд содержит:
- Пошаговую настройку 2х ВМ
- Установку Docker и зависимостей
- Настройку GitVerse CI/CD
- Развертывание мониторинга
- Настройку self-hosted runner
Для локального тестирования
Используйте команды Makefile для быстрого старта:
📁 Структура проекта
lab2_cicd_monitoring/
├── README.md # Это руководство
├── DEPLOYMENT_GUIDE.md # Полная настройка на 2х ВМ
├── Makefile # Команды для локального тестирования
├── requirements.txt # Python зависимости
├── src/ # Исходный код приложения
│ ├── app.py # Flask приложение
│ └── __init__.py
├── tests/ # Тесты
│ ├── test_app.py # Unit тесты
│ └── conftest.py
├── perf/ # Performance тесты
│ └── k6-smoke.js # K6 smoke тест
├── config/ # Конфигурационные файлы
│ ├── docker-compose.dev.yml # Разработка
│ ├── docker-compose.monitoring-agents.yml # Мониторинг-агенты
│ └── docker-compose.monitoring.yml # Мониторинг
│ ├── license-allowlist.json # Политика лицензий
│ └── trivyignore # Игнорируемые уязвимости
├── monitoring/ # Конфигурация мониторинга
│ ├── prometheus.yml # Prometheus конфигурация
│ └── grafana/ # Grafana дашборды
└── .gitverse/ # GitVerse CI/CD
└── workflows/
└── ci-cd-pipeline.yaml # Основной пайплайн
🛠️ Локальное тестирование
Основные команды Makefile
Примеры использования
🔧 Переменные окружения
Для локального тестирования
Для продакшена (настраиваются в GitVerse)
🚀 CI/CD Пайплайн (GitVerse)
Этапы пайплайна
- lint - Проверка качества кода (flake8, black, mypy)
- deps_licenses - Проверка лицензий зависимостей
- unit - Unit тесты (pytest)
- build_image - Сборка Docker образа
- scan_image - Сканирование безопасности (Trivy)
- e2e_smoke - E2E smoke тесты
- perf_smoke - Performance тесты (K6)
- push_registry - Пуш в реестр
- deploy_ssh - Деплой на ВМ1
- verify - Проверка деплоя
- complete - Завершение
Триггеры
- push - любой пуш в любую ветку
- pull_request - любой PR
- workflow_dispatch - ручной запуск
📊 Мониторинг
Доступ к интерфейсам
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin123)
Основные метрики
- Node Exporter: CPU, память, диск, сеть
- Cadvisor: контейнеры, Docker
- Flask: HTTP запросы, ошибки
🧪 Тестирование
Unit тесты
E2E тесты
Performance тесты
🔍 Устранение неполадок
Локальные проблемы
Проблемы CI/CD
- Проверьте секреты в GitVerse
- Убедитесь в доступности SSH
- Проверьте логи в GitVerse
📚 Документация
- DEPLOYMENT_GUIDE.md - Полная настройка на 2х ВМ (включает настройку CI/CD и мониторинга)
🎯 Цели лабораторной
- CI/CD пайплайн - полный цикл от кода до деплоя
- Мониторинг - сбор и визуализация метрик
- Безопасность - сканирование уязвимостей
- Тестирование - unit, e2e, performance тесты
- Автоматизация - автоматический деплой по SSH
🤝 Вклад в проект
- Fork репозитория
- Создайте feature branch
- Внесите изменения
- Запустите тесты: make test
- Создайте Pull Request
📄 Лицензия
MIT License