Инструкция DevOps - Space-Lords-TG/docs GitHub Wiki
GitHub
Хранение секретов
Все секреты находятся на уровне репозитория и из любой ветки можно получить к ним доступ.
Push
При каждом *пуше запускается CI/CD процесс.
Сервер
Архитектура сервиса
Все компоненты системы контейнеризированы:
- backend - инстанс с приложением. Вся логика выполняется в нем;
- backend-test - инстанс с приложением для тестирования;
- postgres - база данных PostgreSQL для приложения;
- postgres-test - тестовая база данных PostgreSQL для приложения;
- postgres-backup - сервис по созданию бэкапов базы данных;
- node-exporter - агент сбора метрик Node Exporter для операционных систем;
- cadvisor - агент сбора метрик cAdvisor для Docker контейнеров;
- alert-manager - компонент системы мониторинга Prometheus для оповещения;
- prometheus - это база данных Prometheus временных рядов;
- grafana - программная система визуализации данных Grafana.
Все параметры подъема контейнеров описаны в docker-compose.yaml
Откат изменений
По умолчанию для backend приложения используется latest образ из dockerhub.
Для использования конкретного образа для приложения необходимо latest заменить на тег нужного образа из dockerhub
Оповещение
Правила оповещения описаны в prometheus/alert.rules.yml. Настройки сервиса оповещений alert manager расположены в alert_manager/alertmanager.yml. Правила оповещений:
- 90% использования RAM
- 90% использования CPU
- 10% свободно места на диске
- Любой из контейнеров упал
Оповещение включается, если правило соблюдается на протяжении одной минуты
Падения контейнера
- Если контейнер падает с внутренней ошибкой, то он автоматически поднимется заново (оповещение происходить не будет).
- Если контейнер падает по внешним причинам (нехватка памяти или мощности процессора), то необходимо решить проблему и выполнить команду
make имя_контейнера
Нехватка ресурсов машины будет влиять на все контейнеры, поэтому в случае их нехватки все сервисы будут замедляться в работе и придется изменить количество одновременно используемых контейнеров (либо другими способами изменить нагрузку на машину)