Описание компонентов
DDP Frontend
DDP Frontend — это веб-интерфейс платформы, построенный на Vue.js 3 с TypeScript. Компонент предоставляет пользователям графический интерфейс для работы с платформой через веб-браузер.
Основные функции:
- Отображение пользовательского интерфейса для управления сервисами, окружениями и ресурсами.
- Обработка пользовательских действий и передача запросов в DDP Backend через REST API.
Технические характеристики:
- Принимает входящие соединения от пользователей.
- Взаимодействует с DDP Backend.
DDP Backend
DDP Backend — это серверная часть платформы, реализованная на языке Go. Компонент предоставляет REST API для управления всеми механизмами платформы.
Основные функции:
- Предоставление REST API для программного взаимодействия с платформой.
- Обработка бизнес-логики платформы.
- Реализация системы контроля доступа (RBAC) и управления правами пользователей.
- Интеграция с внешними инфраструктурными сервисами для выполнения различных операций.
- Управление данными через взаимодействие с PostgreSQL и Redis.
Технические характеристики:
- Принимает API-запросы от пользователей и DDP Frontend.
- Выполняет валидацию токенов доступа локально, используя кэшированные ключи подписи.
- Подключается к Redis для координации очереди задач.
- Подключается к PostgreSQL для хранения и управления данными.
DDP Worker
DDP Worker — это компонент для выполнения фоновых задач и асинхронных операций, реализованный на языке Go. Worker обрабатывает задачи из очередей Redis Streams и выполняет операции по запуску действий и синхронизации источников данных.
Основные функции:
- Синхронизация данных из внешних источников.
- Выполнение действий в асинхронном режиме.
- Выполнение проверок статуса сущностей.
Технические характеристики:
- Может быть развернут в нескольких экземплярах для обеспечения масштабируемости.
- Использует Redis Streams для получения задач из очередей.
- Подключается к PostgreSQL для чтения и обновления данных.
- Интегрируется с внешними инфраструктурными сервисами для выполнения операций.
Dex
Dex — это компонент системы аутентификации и авторизации, выполняющий роль identity provider. Dex обеспечивает единую точку входа для пользователей и интегрируется с различными внешними провайдерами аутентификации.
Dex не входит в состав модуля DDP (Deckhouse Development Platform) и является частью DKP (Deckhouse Kubernetes Platform).
Основные функции:
- Управление процессом аутентификации пользователей.
- Выдача токенов доступа.
- Интеграция с внешними провайдерами аутентификации (Keycloak, LDAP и другими).
- Предоставление ключей подписи для проверки токенов.
Технические характеристики:
- Выписывает токены для аутентификации в DDP Backend.
- Периодически предоставляет ключи подписи токенов для проверки.
- Интегрируется с внешними провайдерами аутентификации через стандартные протоколы (OIDC, LDAP и др.).
Redis
Redis — это хранилище данных в памяти, используемое платформой для работы с очередями задач.
Redis может быть установлен в составе модуля DDP для тестовых и демонстрационных целей. В промышленной эксплуатации рекомендуется использование выделенных инстансов Redis.
Основные функции:
- Реализация очередей задач через Redis Streams для асинхронной обработки.
- Поддержка распределенных блокировок для координации работы нескольких экземпляров Worker.
- Хранение событий, генерируемых при изменениях сущностей.
Технические характеристики:
- Используется для хранения очередей задач, которые обрабатываются DDP Worker.
PostgreSQL
PostgreSQL — это основная реляционная база данных платформы, используемая для хранения всей постоянной информации.
PostgreSQL может быть установлен в составе модуля DDP для тестовых и демонстрационных целей. В промышленной эксплуатации рекомендуется использование выделенных инстансов PostgreSQL.
Описание сетевых взаимодействий

Входящие соединения
- Пользователи подключаются к DDP Frontend по протоколу HTTPS (TCP/443) для работы с веб-интерфейсом.
- Пользователи могут напрямую обращаться к DDP Backend по протоколу HTTPS (TCP/443) для использования REST API.
Взаимодействие между компонентами платформы
- DDP Frontend → DDP Backend (TCP/8080, опционально mTLS): Frontend передает запросы пользователей в Backend для обработки.
- DDP Backend ↔ Dex (TCP/443): Backend получает ключи подписи от Dex для проверки токенов.
- DDP Backend ↔ Redis (TCP/6379): Backend использует Redis для координации очередей задач и хранения событий.
- DDP Backend ↔ PostgreSQL (TCP/5432): Backend выполняет операции чтения и записи постоянных данных.
- DDP Worker ↔ Redis (TCP/6379): Worker получает задачи из очередей Redis Streams и использует распределенные блокировки.
- DDP Worker ↔ PostgreSQL (TCP/5432): Worker обновляет данные в базе после выполнения задач.
Интеграция с внешними сервисами
- Dex ↔ Провайдеры аутентификации (Keycloak, LDAP и др.): Dex интегрируется с внешними системами управления пользователями.
- DDP Backend ↔ Инфраструктурные сервисы (TCP/443): Backend взаимодействует с внешними сервисами для получения информации.
- DDP Worker ↔ Инфраструктурные сервисы (TCP/443): Worker выполняет операции с внешними сервисами при синхронизации данных и выполнении действий.