Для работы системы ELMA365 On-Premises требуются СУБД PostgreSQL, MongoDB, Valkey, шина событий RabbitMQ и объектное хранилище данных S3. В статье описана установка баз данных и S3-хранилища в Kubernetes-кластер чартом elma365-dbs. Возможна установка только требуемых компонентов из чарта elma365-dbs, неиспользуемые можно отключить.
Установка состоит из четырёх этапов:
- Скачивание Helm-чарта и конфигурационного файла.
- Заполнение конфигурационного файла.
- Установка с помощью Helm в Kubernetes-кластер чарта elma365-dbs.
- Подключение к БД и 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
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет
helm repo add elma365 https://charts.elma365.tech
tar -xf elma365-dbs-X.Y.Z.tgz |
Шаг 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.
Конец внимание
- В разделе 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
- Заполните параметры конфигурации компонентов, установку которых вы включили:
Параметры конфигурации 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
|
# Выбор устанавливаемых БД Где формат repository:
|
Параметры конфигурации 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
|
# Выбор устанавливаемых БД Где формат repository:
|
Параметры конфигурации 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
|
# Выбор устанавливаемых БД Где формат repository:
|
Параметры конфигурации Valkey
При необходимости в параметре size измените размер хранилища данных, который подбирается индивидуально.
# Выбор устанавливаемых БД
global:
...
# Настройки Valkey
valkey:
master:
persistence:
# Размер хранилища данных (PVC)
size: 10Gi
# Если не определено, используется StorageClass по умолчанию
# storageClass: "-"
...
commonConfiguration: |-
maxclients 20000
replica:
persistence:
# Размер хранилища данных (PVC)
size: 10Gi
...
Заполнение параметров кластеризации для Valkey
|
# Выбор устанавливаемых БД Где формат repository:
|
Параметры конфигурации SeaweedFS
- По умолчанию при установке 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> — пароль этого пользователя.
- При необходимости измените параметры конфигурации 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
# Выбор устанавливаемых БД
|
# Выбор устанавливаемых БД
|
Параметры конфигурации 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
# Выбор устанавливаемых БД Где:
Если при создании secret с сертификатом для работы по https вы использовали самоподписанный сертификат с помощью OpenSSL или сертификат, выпущенный локальным удостоверяющем центром, необходимо настроить поддержку доверия пользовательскому сертификату CA. Для встроенных баз данных вы можете сделать это с помощью модуля дополнений Kyverno. |
# Выбор устанавливаемых БД Где формат repository:
|
Шаг 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:
- address —
elma365_your_domain; - bucket —
s3elma365; - region —
ru-central-1; - access key ID —
PZSF73JG72Ksd955JKU1HIA; - secret access key —
aFDkj28Jbs2JKbnvJH678MNwiz88zKjsuNBHHs; - upload method —
PUT; - enable SSL —
No.
Удаление чарта elma365-dbs с помощью Helm в Kubernetes-кластере
Начало внимание
Перед удалением чарта elma365-dbs произведите резервное копирование баз данных и S3-хранилища. Удаление чарта elma365-dbs приведёт к полной потере данных приложения ELMA365.
Конец внимание
Выполните удаление чарта elma365-dbs в пространство имён elma365-dbs:
helm uninstall elma365-dbs -n elma365-dbs