Подготовка встроенных баз данных

Для работы системы ELMA365 On-Premises требуются СУБД PostgreSQL, MongoDB, Valkey, шина событий RabbitMQ и объектное хранилище данных S3. В статье описана установка баз данных и S3-хранилища в Kubernetes-кластер чартом elma365-dbs. Возможна установка только требуемых компонентов из чарта elma365-dbs, неиспользуемые можно отключить.

Установка состоит из четырёх этапов:

  1. Скачивание Helm-чарта и конфигурационного файла.
  2. Заполнение конфигурационного файла.
  3. Установка с помощью Helm в Kubernetes-кластер чарта elma365-dbs.
  4. Подключение к БД и S3.

Шаг 1. Скачивание Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл values-elma365-dbs.yaml, выполнив следующую команду:

helm repo add elma365 https://charts.elma365.tech
helm repo update
helm show values elma365/elma365-dbs > values-elma365-dbs.yaml

Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

Шаг 2. Заполнение конфигурационного файла

Заполните конфигурационный файл values-elma365-dbs.yaml для установки баз данных и S3-хранилища.

В рамках статьи рассмотрим установку баз данных и S3-хранилища в Kubernetes-кластер с помощью чарта elma365-dbs. Для этого будут использоваться стандартные строки подключения и пароли, указанные в чарте.

В чарте elma365-dbs находится раздел global, в котором включается или отключается установка компонентов и разделов чарта. Это нужно для конфигурирования параметров каждого компонента: postgresql, mongodb, rabbitmq, valkey, seaweedfs, minio, elasticsearch. В статье рассмотрим необходимые параметры для установки баз данных и S3-хранилища разделов этих компонентов.

Начало внимание

Рекомендуем использовать решение SeaweedFS в качестве S3‑хранилища, т. к. MinIO переведён в режим ограниченной поддержки с декабря 2025 г. Подробнее читайте в официальной информации от MinIO.

Конец внимание

 

  1. В разделе global включите установку необходимых баз данных и S3‑хранилища. Для этого укажите значение true в параметре enabled тех компонентов, которые будете устанавливать.

# Выбор устанавливаемых БД
global:
  postgresql:
    # Установка postgres
    enabled: true
  mongodb:
    # Установка mongoDB
    enabled: true
  valkey:
    # Установка valkey
    enabled: true
  rabbitmq:
    # Установка rabbitmq
    enabled: true
  minio:
    # Установка minio для S3-хранилища
    enabled: false
  elasticsearch:
    # Установка Elasticsearch (Включается для ELMA Bot)
    enabled: false
  seaweedfs:
    # Установка seaweedfs
    enabled: true

  1. Заполните параметры конфигурации компонентов, установку которых вы включили:

 

 

Параметры конфигурации PostgreSQL

При необходимости измените параметры:

  • database — наименование базы данных, которая будет создана в PostgreSQL в момент установки;
  • username — наименование пользователя для доступа к базе данных, указанной в database. Пользователь будет создан в PostgreSQL в момент установки;
  • postgresPassword — пароль для пользователя, указанного в username;
  • size — размер хранилища данных, подбирается индивидуально.

# Выбор устанавливаемых БД
global:
...
# Настройки БД postgres
postgresql:
  auth:
    # Название БД
    database: elma365
    # Пользователь
    username: postgres
    # Пароль БД Postgres
    postgresPassword: pgpassword
    replicationUsername: repl_user
    replicationPassword: repl_password
    enablePostgresUser: true
    password: pgpassword
  primary:
    persistence:
      # Размер хранилища данных (PVC)
      size: 100Gi
      enabled: true
...

Заполнение параметров кластеризации для PostgreSQL

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

Параметры конфигурации MongoDB

При необходимости измените параметры:

  • database — наименование базы данных, которая будет создана в MongoDB в момент установки;
  • username — наименование пользователя для доступа к базе данных, указанной в database. Пользователь будет создан в MongoDB в момент установки;
  • password — пароль для пользователя, указанного в username;
  • size — размер хранилища данных, подбирается индивидуально.

# Выбор устанавливаемых БД
global:
...
# Настройки MongoDB
mongodb:
  auth:
    # Пользователь
    username: elma365
    # Название БД
    database: elma365
    # Пароль БД
    password: mongopassword
    # root пароль БД
    rootPassword: mongorootpassword
    replicaSetKey: replicapassword
  persistence:
    # Размер хранилища данных (PVC)
    size: 20Gi
...

Заполнение параметров кластеризации для MongoDB

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

 

Параметры конфигурации RabbitMQ

При необходимости измените параметры:

  • vhost — наименование виртуального хоста, который будет создан в RabbitMQ в момент установки;
  • username — наименование пользователя для доступа к виртуальному хосту, указанному в vhost. Пользователь будет создан в RabbitMQ в момент установки;
  • password — пароль для пользователя, указанного в username;
  • size — размер хранилища данных, подбирается индивидуально.

# Выбор устанавливаемых БД
global:
...
# Настройки rabbitMQ
rabbitmq:
  auth:
    # Пользователь
    username: elma365
    # vhost
    vhost: elma365
    # Пароль
    password: rmqpassword
    erlangCookie: zk8Jdo2Kzz4ql
  persistence:
    # Размер хранилища данных (PVC)
    size: 5Gi
...

Заполнение параметров кластеризации для RabbitMQ

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

Параметры конфигурации Valkey

При необходимости в параметре size измените размер хранилища данных, который подбирается индивидуально.

# Выбор устанавливаемых БД
global:
...
# Настройки Valkey
valkey:
  master:
    persistence:
      # Размер хранилища данных (PVC)
      size: 10Gi
      # Если не определено, используется StorageClass по умолчанию
      # storageClass: "-"
...
  commonConfiguration: |-
    maxclients 20000
  replica:
    persistence:
      # Размер хранилища данных (PVC)
      size: 10Gi
...

Заполнение параметров кластеризации для Valkey

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

 

Параметры конфигурации SeaweedFS

  1. По умолчанию при установке SeaweedFS создаётся секрет с именем my-s3-secret. Вместо него вы можете использовать свой секрет и указать его имя в конфигурации SeaweedFS в параметре seaweedfs.s3.existingConfigSecret.

Пример секрета:

apiVersion: v1
kind: Secret
type: Opaque
metadata:
 name: my-custom-s3-secret
 namespace: <Namespace>
labels:
 app.kubernetes.io/name: seaweedfs
 app.kubernetes.io/component: s3
stringData:
 seaweedfs_s3_config: '{"identities":[{"name":"anvAdmin","credentials":[{"accessKey":"<accessKey>","secretKey":"<secretKey>"}],"actions":["Admin","Read","Write"]}]}'

Где:

  • <accessKey> — наименование пользователя для доступа к S3‑хранилищу;
  • <secretKey> — пароль этого пользователя.
  1. При необходимости измените параметры конфигурации SeaweedFS:  
  • filer.s3.createBuckets.name — наименование бакета, который будет создан в SeaweedFS в момент установки.
     
    Важно: создайте бакет в S3 с наименованием формата s3elma365*. Примеры бакетов в S3: s3elma365, s3elma365-dev, s3elma365-prod;
  • seaweedfs.s3.existingConfigSecret — если вы создали свой секрет с данными для доступа к S3-хранилищу, укажите имя этого секрета. Вы можете оставить значение по умолчанию my-s3-secret. Тогда секрет с таким именем создастся автоматически при установке SeaweedFS;
  • s3.iIngress.host — наименование домена (FQDN), по которому будет доступно S3-хранилище. В статье для примера используется имя elma365_server.your_domain;
  • size — размер хранилища данных. Укажите значение в зависимости от объёма ваших данных.

# Выбор устанавливаемых БД
global:
...
# Настройки SeaweedFS
seaweedfs:
# Параметры конфигурации мастера
 master:
   replicas: 1
# Тип репликации XYZ для файлов:
# X количество реплик в других dc
# Y количество реплик в других racks
# Z количество реплик на других volume
   defaultReplication: "000"
   data:
# размер хранилища данных master (PVC)
     size: "10Gi"
# если не определено, используется StorageClass по умолчанию
#    storageClass: ""
 volume:
   replicas: 1
   dataDirs:
# размер хранилища данных volume (PVC)
   - size: "30Gi"
     name: data1
     type: "persistentVolumeClaim"
     hostPathPrefix: /ssd maxVolumes: 0
# если не определено, используется StorageClass по умолчанию
#    storageClass: ""
 filer:
   replicas: 1
# Тип репликации XYZ для метаданных:
# X количество реплик в других dc
# Y количество реплик в других racks
# Z количество реплик на других volume
   defaultReplicaPlacement: "000"
   maxMB: 256
   data:
# размер хранилища данных filer (PVC)
     size: "30Gi"
# если не определено, используется StorageClass по умолчанию
# storageClass: ""
 s3:
   createBuckets:
# бакет ELMA365
     - name: s3elma365
       anonymousRead: false
 s3:
   replicas: 1
   existingConfigSecret: my-s3-secret
   ingress:
   ## указать ingressClassName
     className: ""
# включение host в ingress (необходимо указать для TLS)
#    host: " elma365_server.your_domain "
# TLS настройки
#    tls:
#    - hosts:
#      - elma365_server.your_domain
#      secretName: "elma365-onpremise-tls"
...

 

Заполнить параметры TLS/SSL для SeaweedFS

 

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

 

Параметры конфигурации MinIO

Начало внимание

Рекомендуем использовать решение SeaweedFS в качестве S3‑хранилища, т. к. MinIO переведён в режим ограниченной поддержки с декабря 2025 г. Подробнее читайте в официальной информации от MinIO.  

Конец внимание

При необходимости измените параметры:

  • rootUser — наименование пользователя для доступа к S3-хранилищу. Пользователь будет создан в MinIO в момент установки;
  • rootPassword — пароль для пользователя, указанного в rootUser;
  • defaultBuckets — наименование бакета, который будет создан в MinIO в момент установки;
     
    Важно: наименование бакета в S3 должно соответствовать формату s3elma365. Примеры бакетов в S3: s3elma365, s3elma365-dev, s3elma365-prod;
  • apiIngress.apiIngress.path — наименование бакета для Ingress, должно совпадать с defaultBuckets;
  • apiIngress.apiIngress.name — наименование домена (FQDN), по которому будет доступно S3 хранилище. В рамках статьи elma365_server.your_domain;
  • size — размер хранилища данных, подбирается индивидуально.

# Выбор устанавливаемых БД
global:
...
# Настройки minio (S3-хранилище)
minio:
  auth:
    rootUser: "PZSF73JG72Ksd955JKU1HIA"
    rootPassword: "aFDkj28Jbs2JKbnvJH678MNwiz88zKjsuNBHHs"
  # Бакет ELMA365
  defaultBuckets: s3elma365
  # Дополнительные бакеты включаются для ELMA365 + ELMA Bot
  # defaultBuckets: s3elma365,s3elmabot,elmabot-static-files,elmabot-temporary-files
  apiIngress:
    extraHosts:
      - path: /s3elma365
        name: elma365_server.your_domain
...
  persistence:
    # Размер хранилища данных (PVC)
    size: 100Gi
...

Заполнение параметров включения TLS/SSL для MinIO

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

 

Шаг 3. Установка с помощью Helm в Kubernetes-кластер чарта elma365-dbs

Выполните установку чарта elma365-dbs в пространство имён elma365-dbs.

Для установки через интернет:

helm upgrade --install elma365-dbs elma365/elma365-dbs -f values-elma365-dbs.yaml -n elma365-dbs --create-namespace

Для офлайн-установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

helm upgrade --install elma365-dbs ./elma365-dbs -f values-elma365-dbs.yaml -n elma365-dbs --create-namespace 

Шаг 4. Подключение к БД и S3

За наименование домена кластера Kubernetes взято cluster.local.

Строка для подключения к PostgreSQL:

postgresql://elma365:SecretPassword@postgres.elma365-dbs.svc.cluster.local:5432/elma365?sslmode=disable

Строка для подключения к MongoDB:

mongodb://elma365:SecretPassword@mongo.elma365-dbs.svc.cluster.local:27017/elma365?ssl=false&replicaSet=rs0&readPreference=nearest

Строка для подключения к RabbitMQ:

amqp://elma365user:SecretPassword@rabbitmq.elma365-dbs.svc.cluster.local:5672/elma365vhost

Строка для подключения к Valkey:

redis://valkey.elma365-dbs.svc.cluster.local:6379/0

Строка для подключения к Valkey в кластерном режиме:

redis://valkey.elma365-dbs.svc.cluster.local:26379/0?masterName=myprimary

Параметры для подключения к SeaweedFS или MinIO:

  • addresselma365_your_domain;
  • buckets3elma365;
  • regionru-central-1;
  • access key IDPZSF73JG72Ksd955JKU1HIA;
  • secret access keyaFDkj28Jbs2JKbnvJH678MNwiz88zKjsuNBHHs;
  • upload methodPUT;
  • enable SSLNo.

Удаление чарта elma365-dbs с помощью Helm в Kubernetes-кластере

Начало внимание

Перед удалением чарта elma365-dbs произведите резервное копирование баз данных и S3-хранилища. Удаление чарта elma365-dbs приведёт к полной потере данных приложения ELMA365.

Конец внимание

Выполните удаление чарта elma365-dbs в пространство имён elma365-dbs:

helm uninstall elma365-dbs -n elma365-dbs