Архитектура базы данных системы AltFlow
Общее описание
Cистемой AltFlow для sysBD используется PostgreSQL. В кластере создаются несколько логически разделённых баз данных, каждая из которых отвечает за отдельный компонент системы.
Структура:
PostgreSQL Cluster
│
├── distributor (конфигурация Helm-чартов и стадий)
├── jwt (авторизация и роли)
└── postgres (служебная база PostgreSQL)
Также в кластере создаётся несколько ролей пользователей для доступа сервисов к базам данных.
Роли PostgreSQL
Система использует следующие роли:
| Роль | Назначение |
|---|---|
distributor_user | сервис Distributor |
api_user | сервис авторизации JWT |
postgres | администратор БД |
Пароли должны задаваться вручную.
База данных distributor
Используется сервисом Distributor, который управляет запуском Helm-чартов для разных стадий pipeline.
Таблица helm_charts
Содержит соответствие стадии и Helm-чарта.
| Поле | Тип | Описание |
|---|---|---|
stage | text | стадия pipeline |
helm_chart_name | text | имя чарта |
helm_chart_ver | text | версия |
helm_repo | text | репозиторий Helm |
Пример данных:
| stage | chart | version |
|---|---|---|
| SIGN | sign-image | 0.1.5 |
| BUILD | build-image | 1.1.13 |
| PUSH | push-image | 1.0.0 |
Важно! Версии чартов в таблице должны совпадать с теми, которые вы загрузили в oci_registry.
Актуальные версии чартов, как правило, можно посмотреть в репозитории по пути altflow/helm/job_packages.
Таблица helm_repo
Список доступных Helm-репозиториев.
| Поле | Тип |
|---|---|
| repo_name | text |
| repo_url | text |
Формат repo_url: https://<IP/DNS>/<PROJECT_NAME>
Таблица tasks
Описывает задачи pipeline.
| Поле | Тип |
|---|---|
| id | integer |
| stage | varchar(10) |
| helm | text |
Используется последовательность:
tasks_id_seq
База данных jwt
Используется для системы авторизации и ролей.
Таблица permissions
Список разрешений.
| Поле | Тип |
|---|---|
| id | integer |
| permission_name | varchar |
| description | varchar |
Пример:
building-oci
Таблица roles
Список ролей.
| Поле | Тип |
|---|---|
| id | integer |
| role_name | varchar |
| permissions | integer[] |
Пример:
builder -> {1}
Таблица users
Пользователи системы.
| Поле | Тип |
|---|---|
| user_id | varchar |
| username | varchar |
| roles | integer[] |
Данная архитектура разделяет ответственность между несколькими базами:
| База | Назначение |
|---|---|
| distributor | управление Helm-развёртываниями |
| jwt | роли и авторизация |
Такой подход обеспечивает:
- изоляцию сервисов
- безопасность доступа
- масштабируемость компонентов системы.