Архитектура базы данных системы 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-чарта.

ПолеТипОписание
stagetextстадия pipeline
helm_chart_nametextимя чарта
helm_chart_vertextверсия
helm_repotextрепозиторий Helm

Пример данных:

stagechartversion
SIGNsign-image0.1.5
BUILDbuild-image1.1.13
PUSHpush-image1.0.0

Важно! Версии чартов в таблице должны совпадать с теми, которые вы загрузили в oci_registry.

Актуальные версии чартов, как правило, можно посмотреть в репозитории по пути altflow/helm/job_packages.


Таблица helm_repo

Список доступных Helm-репозиториев.

ПолеТип
repo_nametext
repo_urltext

Формат repo_url: https://<IP/DNS>/<PROJECT_NAME>

Таблица tasks

Описывает задачи pipeline.

ПолеТип
idinteger
stagevarchar(10)
helmtext

Используется последовательность:

tasks_id_seq

База данных jwt

Используется для системы авторизации и ролей.

Таблица permissions

Список разрешений.

ПолеТип
idinteger
permission_namevarchar
descriptionvarchar

Пример:

building-oci

Таблица roles

Список ролей.

ПолеТип
idinteger
role_namevarchar
permissionsinteger[]

Пример:

builder -> {1}

Таблица users

Пользователи системы.

ПолеТип
user_idvarchar
usernamevarchar
rolesinteger[]

Данная архитектура разделяет ответственность между несколькими базами:

БазаНазначение
distributorуправление Helm-развёртываниями
jwtроли и авторизация

Такой подход обеспечивает:

  • изоляцию сервисов
  • безопасность доступа
  • масштабируемость компонентов системы.