lab2_cicd_monitoring

4

Описание

Языки

  • 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 ВМ)

Используйте подробное руководство:

Этот гайд содержит:

  • Пошаговую настройку 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)

Этапы пайплайна

  1. lint - Проверка качества кода (flake8, black, mypy)
  2. deps_licenses - Проверка лицензий зависимостей
  3. unit - Unit тесты (pytest)
  4. build_image - Сборка Docker образа
  5. scan_image - Сканирование безопасности (Trivy)
  6. e2e_smoke - E2E smoke тесты
  7. perf_smoke - Performance тесты (K6)
  8. push_registry - Пуш в реестр
  9. deploy_ssh - Деплой на ВМ1
  10. verify - Проверка деплоя
  11. complete - Завершение

Триггеры

  • push - любой пуш в любую ветку
  • pull_request - любой PR
  • workflow_dispatch - ручной запуск

📊 Мониторинг

Доступ к интерфейсам

Основные метрики

  • Node Exporter: CPU, память, диск, сеть
  • Cadvisor: контейнеры, Docker
  • Flask: HTTP запросы, ошибки

🧪 Тестирование

Unit тесты

E2E тесты

Performance тесты

🔍 Устранение неполадок

Локальные проблемы

Проблемы CI/CD

  1. Проверьте секреты в GitVerse
  2. Убедитесь в доступности SSH
  3. Проверьте логи в GitVerse

📚 Документация

  • DEPLOYMENT_GUIDE.md - Полная настройка на 2х ВМ (включает настройку CI/CD и мониторинга)

🎯 Цели лабораторной

  1. CI/CD пайплайн - полный цикл от кода до деплоя
  2. Мониторинг - сбор и визуализация метрик
  3. Безопасность - сканирование уязвимостей
  4. Тестирование - unit, e2e, performance тесты
  5. Автоматизация - автоматический деплой по SSH

🤝 Вклад в проект

  1. Fork репозитория
  2. Создайте feature branch
  3. Внесите изменения
  4. Запустите тесты:
    make test
  5. Создайте Pull Request

📄 Лицензия

MIT License