Описание компонентов

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.

Описание сетевых взаимодействий

traffic-flows

Входящие соединения

  • Пользователи подключаются к DDP Frontend по протоколу HTTPS (TCP/443) для работы с веб-интерфейсом.
  • Пользователи могут напрямую обращаться к DDP Backend по протоколу HTTPS (TCP/443) для использования REST API.

Взаимодействие между компонентами платформы

  • DDP FrontendDDP Backend (TCP/8080, опционально mTLS): Frontend передает запросы пользователей в Backend для обработки.
  • DDP BackendDex (TCP/443): Backend получает ключи подписи от Dex для проверки токенов.
  • DDP BackendRedis (TCP/6379): Backend использует Redis для координации очередей задач и хранения событий.
  • DDP BackendPostgreSQL (TCP/5432): Backend выполняет операции чтения и записи постоянных данных.
  • DDP WorkerRedis (TCP/6379): Worker получает задачи из очередей Redis Streams и использует распределенные блокировки.
  • DDP WorkerPostgreSQL (TCP/5432): Worker обновляет данные в базе после выполнения задач.

Интеграция с внешними сервисами

  • DexПровайдеры аутентификации (Keycloak, LDAP и др.): Dex интегрируется с внешними системами управления пользователями.
  • DDP BackendИнфраструктурные сервисы (TCP/443): Backend взаимодействует с внешними сервисами для получения информации.
  • DDP WorkerИнфраструктурные сервисы (TCP/443): Worker выполняет операции с внешними сервисами при синхронизации данных и выполнении действий.