Задача: Обеспечение развертывания, эксплуатации и мониторинга микросервисного Spring Boot приложения в Kubernetes-кластере с полным циклом CI/CD и интеграцией Observability-стэка.
Требования:
1. Контейнеризация и Оркестрация: * Разработать Docker-образы для всех компонентов микросервисного Spring Boot приложения. * Реализовать конфигурации развертывания (Deployments), сервисов (Services) и связанных ресурсов Kubernetes (k8s) для обеспечения функционирования приложения в кластере.
2. Система Непрерывной Интеграции и Непрерывного Развертывания (CI/CD): * Внедрить автоматизированный пайплайн CI/CD с использованием GitHub Actions (или развернутого локально Git-сервера). * Обеспечить возможность деплоя на два изолированных целевых окружения: * Тестовое окружение (Staging/Test): Для предрелизного тестирования и валидации. * Продуктовое окружение (Production/Prod): Для эксплуатации конечными пользователями. * Пайплайн должен включать этапы: сборка, тестирование, создание артефактов (Docker-образов), безопасное развертывание в соответствующие окружения (с применением стратегий деплоя).
3. Безопасность Инфраструктуры: * Провести харденинг (hardening) операционных систем на обоих серверах (тестовом и продуктовом) в соответствии с лучшими практиками безопасности. * Настроить и поддерживать межсетевые экраны (фаерволы) на уровне ОС (например, firewalld, ufw) и/или облачных провайдеров, обеспечив минимально необходимый набор открытых портов и строгий контроль входящего/исходящего трафика. * Реализовать базовые меры безопасности Kubernetes (RBAC, секреты, политики сети).
4. Централизованное Логирование (Logging): * Внедрить сбор, агрегацию и хранение логов приложения и инфраструктуры с использованием стэка Loki. * Настроить Grafana для визуализации и анализа логов из Loki.
5. Мониторинг Метрик (Monitoring): * Внедрить систему сбора метрик Prometheus для мониторинга состояния приложения (Spring Boot Actuator), Kubernetes-кластера, узлов и других критичных компонентов. * Настроить Grafana для создания дашбордов визуализации метрик из Prometheus.
6. Распределенная Трассировка (Tracing): * Интегрировать инструмент распределенной трассировки (Jaeger или Zipkin) для отслеживания запросов между микросервисами. * Настроить экспорт трейсов из приложения и их сбор в выбранной системе.
7. Система Оповещений (Alerting): * Настроить Grafana Alerts (или механизм оповещений Prometheus Alertmanager с интеграцией в Grafana) для создания правил оповещений на основе метрик (Prometheus) и/или логов (Loki). * Определить критичные метрики (например, доступность сервисов, загрузка CPU/памяти, ошибки 5xx, время отклика) и установить пороги срабатывания алертов. * Настроить каналы доставки алертов (например, электронная почта, Slack, Telegram, PagerDuty).
8. Документация: * Предоставить документацию по конфигурации пайплайнов CI/CD, развертыванию в k8s, настройкам безопасности, схемам работы Observability-стэка (Loki, Prometheus, Grafana, Jaeger/Zipkin) и алертинга.
Цель: Создать отказоустойчивую, безопасную и наблюдаемую платформу для эксплуатации микросервисного приложения в Kubernetes, обеспечивающую автоматизированный процесс поставки изменений на тестовое и продуктовое окружения, а также предоставляющую инструменты для оперативного контроля, анализа проблем и реагирования на инциденты.