Инструкция 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 имя_контейнера

Нехватка ресурсов машины будет влиять на все контейнеры, поэтому в случае их нехватки все сервисы будут замедляться в работе и придется изменить количество одновременно используемых контейнеров (либо другими способами изменить нагрузку на машину)