# Руководство по развертыванию приложения на Kubernetes

Данное руководство предоставляет пошаговые инструкции по развертыванию приложения, состоящего из нескольких модулей, на Kubernetes. Приложение использует общую базу данных PostgreSQL и включает следующие модули:

1. **Основной модуль мониторинга**: Рабочее место оператора, состоящее из компонентов бэкенда и фронтенда.
2. **Модуль пересылки**: Принимает данные из внешней системы, генерирует события и отправляет их в основной модуль, состоящее из компонентов бэкенда и фронтенда.
3. **Модуль импорта**: Импортирует данные из старой версии приложения и заполняет их в текущую систему.
4. **Модуль заполнения БД пересылки**: Заполняет базу данных модуля пересылки необходимыми данными.

## Шаги развертывания

### Шаг 1: Развертывание базы данных PostgreSQL

1. Создайте экземпляр PostgreSQL, который будет использоваться всеми модулями.
2. Убедитесь, что необходимые файлы конфигурации (например, ConfigMap и Secret для учетных данных базы данных) доступны в вашей среде Kubernetes.
3. Разверните экземпляр PostgreSQL с помощью следующей команды:
   ```bash
   kubectl apply -f postgres-deployment.yaml
   ```
4. Убедитесь, что экземпляр PostgreSQL запущен и работает:
   ```bash
   kubectl get pods -l app=postgres
   ```

### Шаг 2: Развертывание основного модуля мониторинга

1. Разверните компоненты бэкенда и фронтенда модуля мониторинга. Этот модуль создаст базу данных "Monitoring".
2. Используйте предоставленные файлы конфигурации Kubernetes для развертывания бэкенда и фронтенда мониторинга:
   ```bash
   kubectl apply -f monitoring-backend-deployment.yaml
   kubectl apply -f monitoring-frontend-deployment.yaml
   ```
3. Убедитесь, что оба компонента успешно запущены:
   ```bash
   kubectl get pods -l app=monitoring-backend
   kubectl get pods -l app=monitoring-frontend
   ```

### Шаг 3: Развертывание модуля импорта

1. Разверните модуль импорта для импорта данных из старой версии приложения и заполнения базы данных "Monitoring". Модуль импорта также создаст новую базу данных "Mover".
2. Разверните модуль импорта с помощью следующей команды:
   ```bash
   kubectl apply -f importer-deployment.yaml
   ```
3. Убедитесь, что модуль импорта успешно выполнен:
   ```bash
   kubectl get pods -l app=importer
   ```
   > **Примечание**: Модуль импорта обычно запускается как job. Убедитесь, что job завершилась успешно, прежде чем продолжить.

### Шаг 4: Развертывание модуля пересылки

1. Разверните модуль пересылки для получения данных из внешних систем, генерации событий и отправки их в модуль мониторинга.
2. Разверните модуль пересылки с помощью следующей команды:
   ```bash
   kubectl apply -f mover-deployment.yaml
   ```
3. Убедитесь, что модуль пересылки запущен:
   ```bash
   kubectl get pods -l app=mover
   ```

### Шаг 5: Развертывание модуля заполнения БД пересылки

1. Разверните модуль заполнения БД пересылки для заполнения базы данных модуля пересылки необходимыми данными.
2. Используйте следующую команду для развертывания модуля:
   ```bash
   kubectl apply -f mover-db-populator-deployment.yaml
   ```
3. Убедитесь, что модуль заполнения БД завершил свою задачу:
   ```bash
   kubectl get pods -l app=mover-db-populator
   ```

## Финальная проверка

1. Убедитесь, что все модули запущены и работают, перечислив все pod'ы:
   ```bash
   kubectl get pods
   ```
2. Убедитесь, что ни один pod не находится в состоянии crash-loop или ошибки. При необходимости устраните любые проблемы.

## Примечания
- Убедитесь, что все конфигурации настроены для вашей среды, включая строки подключения к базе данных и любые другие необходимые параметры.
- Используйте Secrets для хранения конфиденциальных данных, таких как пароли базы данных, чтобы обеспечить безопасность вашего приложения.
- Настройте инструменты для логирования и мониторинга, чтобы отслеживать состояние и производительность модулей.

