﻿# Подготовка встроенных баз данных

> [HTML Version](embedded-databases-settings.html)

Для работы системы ELMA365 On-Premises требуются СУБД PostgreSQL, MongoDB, Valkey, шина событий RabbitMQ и S3-хранилище. В статье описана установка баз данных и S3-хранилища в Kubernetes-кластер чартом \[OBJECT\]. Возможна установка только требуемых компонентов из чарта \[OBJECT\], неиспользуемые можно отключить.

````
Начало примечание

````
**Примечание**

Используйте компоненты чарта `elma365‑dbs`: PostgreSQL, MongoDB, S3-хранилище — для ознакомления, тестирования и некоторых DEV/TEST‑сценариев. В продуктивной среде рекомендуем устанавливать внешние [PostgreSQL](postgresql.md), [MongoDB](mongodb.md), [S3-хранилище](seaweedfs.md). Это позволит обеспечить требуемый уровень обслуживания и исключить влияние среды исполнения на целостность данных. Вы сможете своевременно обновлять внешние компоненты для устранения уязвимостей и выполнять резервное копирование быстрее и надёжней.  

````
Конец примечание

````


Установка состоит из четырёх этапов:

1. [Скачивание Helm-чарта и конфигурационного файла](#helm-chart).

2. [Заполнение конфигурационного файла](#file-config).

3. [Установка с помощью Helm в Kubernetes-кластер чарта elma365-dbs](#kubernetes-cluster).

4. [Подключение к БД и S3](#databases-s3).

## Шаг 1. Скачивание Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл \[OBJECT\], выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/elma365-dbs > values-elma365-dbs.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

  
Предварительно скачайте файл на компьютере с доступом в интернет.

1. Скачайте образы ELMA365 и загрузите их в локальный реестр образов. Подробнее читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Скачайте архив актуальной версии (latest) чарта \[OBJECT\] из репозитория **elma365**, выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/elma365-dbs

3. ````
Полученный архив чарта \[OBJECT\] скопируйте на сервер, где будет производиться установка.

4. Распакуйте чарт \[OBJECT\] на сервере, где будет производиться установка, скопируйте конфигурационный файл по умолчанию \[OBJECT\] в \[OBJECT\]:

````
tar -xf elma365-dbs-X.Y.Z.tgz  
cp elma365-dbs/values.yaml values-elma365-dbs.yaml
````

## ````
Шаг 2. Заполнение конфигурационного файла

Заполните конфигурационный файл \[OBJECT\] для установки баз данных и S3-хранилища.

В рамках статьи рассмотрим установку баз данных и S3-хранилища в Kubernetes-кластер с помощью чарта \[OBJECT\]. Для этого будут использоваться стандартные строки подключения и пароли, указанные в чарте. 

В чарте \[OBJECT\] находится раздел `global`,** **в котором включается или отключается установка компонентов и разделов чарта. Это нужно для конфигурирования параметров каждого компонента: **postgresql**, **mongodb**, **rabbitmq**, **valkey**, **seaweedfs**, **minio**, **elasticsearch**. В статье рассмотрим необходимые параметры для установки баз данных и S3-хранилища разделов этих компонентов.

````
Начало внимание

````
Рекомендуем использовать решение SeaweedFS в качестве S3‑хранилища, т. к. MinIO переведён в режим ограниченной поддержки с декабря 2025 г. Подробнее читайте в [официальной информации от MinIO](https://github.com/minio/minio/commit/27742d469462e1561c776f88ca7a1f26816d69e2). 

````
Конец внимание

````


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

2. ````
Заполните параметры конфигурации компонентов, установку которых вы включили:



- [PostgreSQL](#pg);

- [MongoDB](#mongo);

- [RabbitMQ](#rabbit);

- [Valkey](#valkey);

- [SeaweedFS](#seaweedfs);

- [MinIO](#minio).



### Параметры конфигурации PostgreSQL

При необходимости измените параметры:

- \[OBJECT\] — наименование базы данных, которая будет создана в PostgreSQL в момент установки;

- \[OBJECT\] — наименование пользователя для доступа к базе данных, указанной в **database**. Пользователь будет создан в PostgreSQL в момент установки;

- \[OBJECT\] — пароль для пользователя, указанного в **username**;

- \[OBJECT\] — размер хранилища данных, подбирается индивидуально.

````
\# Выбор устанавливаемых БД  
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

  
Для настройки отказоустойчивости раскомментируйте и заполните параметры \[OBJECT\]. Для параметра \[OBJECT\] укажите требуемое количество реплик.

````
  
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки БД postgres  
postgresql:  
...  
  # cluster Mode — раскомментируйте следующие строки  
  architecture: replication  
  readReplicas:  
    replicaCount: 2  
  replication:  
    synchronousCommit: 'on'  
    numSynchronousReplicas: 1  
    applicationName: replication  
...
````````


Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** необходимо:

1. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации.

2. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в **Base64**.

3. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\].

4. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в **Base64**.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки БД postgres  
postgresql:  
...  
  # Включение контейнера инициализации, который изменяет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup  
  volumePermissions:  
    enabled: true  
    # Адрес и секрет для приватного registry образов контейнера инициализации  
    image:  
      registry: registry.example.com/bitnami-shell  
      # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
      pullSecrets:  
        - myRegistryKeySecretName  
...  
  # Адрес и секрет для приватного registry  
  image:  
    registry: registry.example.com/postgresql  
    # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
Где формат **repository**:

- адрес —** **\[OBJECT\];

- путь — \[OBJECT\] (для контейнера инициализации \[OBJECT\]).

### Параметры конфигурации MongoDB

При необходимости измените параметры:

- \[OBJECT\] — наименование базы данных, которая будет создана в MongoDB в момент установки;

- \[OBJECT\] — наименование пользователя для доступа к базе данных, указанной в \[OBJECT\]. Пользователь будет создан в MongoDB в момент установки;

- \[OBJECT\] — пароль для пользователя, указанного в \[OBJECT\];

- \[OBJECT\] — размер хранилища данных, подбирается индивидуально.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки MongoDB  
mongodb:  
  auth:  
    # Пользователь  
    username: elma365  
    # Название БД  
    database: elma365  
    # Пароль БД  
    password: mongopassword  
    # root пароль БД  
    rootPassword: mongorootpassword  
    replicaSetKey: replicapassword  
  persistence:  
    # Размер хранилища данных (PVC)  
    size: 20Gi  
...

````
Заполнение параметров кластеризации для MongoDB

  
Для настройки отказоустойчивости раскомментируйте и заполните параметры \[OBJECT\]. Для параметра \[OBJECT\] укажите требуемое количество нод в кластере.

````
  
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки MongoDB  
mongodb:  
...  
  # cluster Mode — раскомментируйте следующие строки  
  architecture: replicaset  
  replicaCount: 3  
...
````

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** необходимо:

1. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации.

2. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в **Base64**.

3. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\].

4. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в **Base64**.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки MongoDB  
mongodb:  
...  
  # Включение контейнера инициализации, который изменяет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup  
  volumePermissions:  
    enabled: true  
    # Адрес и секрет для приватного registry образов контейнера инициализации  
    image:  
      registry: registry.example.com/bitnami-shell  
      # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
      pullSecrets:  
        - myRegistryKeySecretName  
...  
  # Адрес и секрет для приватного registry  
  image:  
    registry: registry.example.com/mongodb  
    # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
Где формат **repository**:

- адрес — \[OBJECT\];

- путь — \[OBJECT\] (для контейнера инициализации \[OBJECT\]).



### Параметры конфигурации RabbitMQ

При необходимости измените параметры:

- \[OBJECT\] — наименование виртуального хоста, который будет создан в RabbitMQ в момент установки;

- \[OBJECT\] — наименование пользователя для доступа к виртуальному хосту, указанному в \[OBJECT\]. Пользователь будет создан в RabbitMQ в момент установки;

- \[OBJECT\] — пароль для пользователя, указанного в \[OBJECT\];

- \[OBJECT\] — размер хранилища данных, подбирается индивидуально.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки rabbitMQ  
rabbitmq:  
  auth:  
    # Пользователь  
    username: elma365  
    # vhost  
    vhost: elma365  
    # Пароль  
    password: rmqpassword  
    erlangCookie: zk8Jdo2Kzz4ql  
  persistence:  
    # Размер хранилища данных (PVC)  
    size: 5Gi  
...

````
Заполнение параметров кластеризации для RabbitMQ

  
Для настройки отказоустойчивости раскомментируйте и заполните параметры \[OBJECT\]. Для параметра \[OBJECT\] укажите требуемое количество нод в кластере.

````
  
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки rabbitMQ  
rabbitmq:  
...  
  # cluster Mode — раскомментируйте следующие строки  
  replicaCount: 3  
...
````

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** необходимо:

1. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации.

2. Указать наименование секрета с правами доступа к приватному registry в параметре \[OBJECT\] для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в **Base64**.

3. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\].

4. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в **Base64**.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки rabbitMQ  
rabbitmq:  
...  
  # Включение контейнера инициализации, который изменяет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup  
  volumePermissions:  
    enabled: true  
    # Адрес и секрет для приватного registry образов контейнера инициализации  
    image:  
      registry: registry.example.com/bitnami-shell  
      # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
      pullSecrets:  
        - myRegistryKeySecretName  
...  
  # Адрес и секрет для приватного registry  
  image:  
    registry: registry.example.com/rabbitmq  
    # секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
Где формат **repository**:

- адрес — \[OBJECT\];

- путь —** **\[OBJECT\] (для контейнера инициализации \[OBJECT\]).

### Параметры конфигурации Valkey

При необходимости в параметре **size** измените размер хранилища данных, который подбирается индивидуально.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки Valkey  
valkey:  
  master:  
    persistence:  
      # Размер хранилища данных (PVC)  
      size: 10Gi  
      # Если не определено, используется StorageClass по умолчанию  
      # storageClass: "-"  
...  
  commonConfiguration: |-  
    maxclients 20000  
  replica:  
    persistence:  
      # Размер хранилища данных (PVC)  
      size: 10Gi  
...

````
Заполнение параметров кластеризации для Valkey

  
Для настройки отказоустойчивости раскомментируйте и заполните параметры \[OBJECT\]. Для параметра \[OBJECT\] укажите требуемое количество нод в кластере.

````
  
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки Valkey  
valkey:  
...  
  replica:  
    persistence:  
      ...  
    replicaCount: 3  
  # cluster Mode — раскомментируйте следующие строки  
  architecture: replication  
  sentinel:  
    enabled: true  
    quorum: 2  
...
````

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** необходимо:

1. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации.

2. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в **Base64**.

3. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\].

4. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в **Base64**.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки Valkey  
valkey:  
...  
  # Включение контейнера инициализации, который изменяет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup\`  
  volumePermissions:  
    enabled: true  
    # Адрес и секрет для приватного registry образов контейнера инициализации  
    image:  
      registry: registry.example.com/bitnami-shell  
      # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
      pullSecrets:  
        - myRegistryKeySecretName  
...  
  # Адрес и секрет для приватного registry  
  image:  
    registry: registry.example.com/valkey  
    # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
Где формат **repository**:

- адрес — \[OBJECT\];

- путь — \[OBJECT\] (для контейнера инициализации \[OBJECT\]).

### 

### Параметры конфигурации SeaweedFS

1. По умолчанию при установке SeaweedFS создаётся секрет с именем `my-s3-secret`. Вместо него вы можете использовать свой секрет и указать его имя в конфигурации SeaweedFS в [параметре seaweedfs.s3.existingConfigSecret](#secret-parameter). 

Пример секрета:

````
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>` — пароль этого пользователя.

2. При необходимости измените параметры конфигурации SeaweedFS:  

- `filer.s3.createBuckets.name` — наименование бакета, который будет создан в SeaweedFS в момент установки.  
  
**Важно**: создайте бакет в S3 с наименованием формата **s3elma365\***. Примеры бакетов в S3: **s3elma365**, **s3elma365-dev**, **s3elma365-prod**;

- `seaweedfs.s3.existingConfigSecret` — если вы [создали свой секрет](#seaweedfs) с данными для доступа к 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 для SeaweedFS

  
Чтобы включить поддержку TLS в SeaweedFS, выполните следующие шаги:

1. Подготовьте секрет с сертификатом для работы по протоколу HTTPS. Подробнее читайте в статье [«Подготовка secret с сертификатом для работы по HTTPS»](preparation-secret-with-certificate-https.md). 

2. В параметре `seaweedfs.s3.ingress.tls.hosts.secretName` укажите наименование секрета, созданного на предыдущем шаге. В статье для примера используется имя `"elma365-onpremise-tls"`.

3. В параметре `seaweedfs.s3.ingress.host` укажите наименование домена (FQDN), по которому будет доступно S3-хранилище SeaweedFS. В статье для примера используется имя `elma365\_server.your\_domain`.

4. В параметре `seaweedfs.s3.ingress.tls.hosts` для настройки TLS также укажите наименование домена (FQDN), по которому будет доступно S3-хранилище SeaweedFS. В статье для примера используется имя `elma365\_server.your\_domain`.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки SeaweedFS  
seaweedfs:  
...  
  s3:  
    ingress:  
    # указать ingressClassName  
      className: ""  
\# включение host в ingress (необходимо указать для TLS)  
    host: " elma365\_server.your\_domain"  
\# TLS настройки SeaweedFS  
    tls:  
    - hosts:  
      - elma365\_server.your\_domain  
      secretName: "elma365-onpremise-tls"  
...

````
  
Если при создании секрета с сертификатом для работы по протоколу HTTPS вы использовали самоподписанный сертификат с помощью OpenSSL или сертификат, выпущенный локальным удостоверяющем центром, настройте поддержку доверия пользовательскому сертификату CA. Для встроенных баз данных вы можете использовать модуль дополнений [Kyverno](install-kyverno.md).





Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному registry необходимо:

1. В параметре `seaweedfs.global.image.repository` задать адрес и путь к приватному registry.

2. В параметре `seaweedfs.global.imagePullSecrets` указать наименование секрета с правами доступа к приватному registry для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в Base64.



````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки S3-хранилища  
seaweedfs:  
\# адрес и секрет для приватного registry образов контейнера инициализации  
  global:  
    registry: registry.example.com  
    repository: "docker/databases"  
    imageName: "seaweedfs"  
    imagePullPolicy: IfNotPresent  
\# секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    imagePullSecrets:  
    - name: yandexsecret-dbs  
...

````
  
Где формат **repository**: адрес —  **registry.example.com**.





### Параметры конфигурации MinIO

````
Начало внимание

````
Рекомендуем использовать решение [SeaweedFS](#seaweedfs) в качестве S3‑хранилища, т. к. MinIO переведён в режим ограниченной поддержки с декабря 2025 г. Подробнее читайте в [официальной информации от MinIO](https://github.com/minio/minio/commit/27742d469462e1561c776f88ca7a1f26816d69e2).  

````
Конец внимание

````
При необходимости измените параметры:

- \[OBJECT\] — наименование пользователя для доступа к S3-хранилищу. Пользователь будет создан в MinIO в момент установки;

- \[OBJECT\] — пароль для пользователя, указанного в \[OBJECT\];

- \[OBJECT\] — наименование бакета, который будет создан в MinIO в момент установки;   
  
**Важно**: наименование бакета в S3 должно соответствовать формату **s3elma365**. Примеры бакетов в S3: \[OBJECT\], \[OBJECT\], \[OBJECT\];

- \[OBJECT\] — наименование бакета для Ingress, должно совпадать с \[OBJECT\];

- \[OBJECT\] — наименование домена (FQDN), по которому будет доступно S3 хранилище. В рамках статьи \[OBJECT\];

- \[OBJECT\] — размер хранилища данных, подбирается индивидуально.

````
\# Выбор устанавливаемых БД  
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 для MinIO

  
Для включения поддержки TLS в MinIO выполните следующие шаги:

1. Подготовьте secret с сертификатом для работы по https. Подробнее об этом читайте в статье [«Подготовка secret с сертификатом для работы по HTTPS»](preparation-secret-with-certificate-https.md).

2. Заполните параметры включения TLS для MinIO:

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки minio (S3 хранилище)  
minio:  
...  
  apiIngress:  
    extraHosts:  
      - path: /s3elma365  
        # Включение host в ingress (необходимо указать для TLS)  
        # Для приложения включите hostEnabled в файле values-elma365.yaml  
        name: elma365\_server.your\_domain  
    # TLS настройки minio  
    extraTls:  
      - hosts:  
          - elma365\_server.your\_domain  
        secretName: "elma365-onpremise-tls"  
...

````
Где:

- \[OBJECT\] — наименование secret, созданного на предыдущем шаге. В рамках статьи \[OBJECT\];

- \[OBJECT\] и \[OBJECT\] — наименование домена (FQDN), по которому доступно S3 хранилище MinIO. В рамках статьи \[OBJECT\].

Если при создании secret с сертификатом для работы по https вы использовали самоподписанный сертификат с помощью OpenSSL или сертификат, выпущенный локальным удостоверяющем центром, необходимо настроить поддержку доверия пользовательскому сертификату CA. Для встроенных баз данных вы можете сделать это с помощью модуля дополнений Kyverno.

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** необходимо:

1. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации.

2. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\] для контейнера инициализации. Секрет должен быть создан вручную и зашифрован в **Base64**.

3. Задать адрес и путь к приватному **registry** в параметре \[OBJECT\].

4. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в **Base64**.

````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки minio (S3-хранилище)  
minio:  
...  
  # Включение контейнера инициализации, который изменяет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup  
  volumePermissions:  
    enabled: true  
    # Адрес и секрет для приватного registry образов контейнера инициализации  
    image:  
      registry: registry.example.com/bitnami-shell  
      # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
      pullSecrets:  
        - myRegistryKeySecretName  
...  
  # Адрес и секрет для приватного registry  
  image:  
    registry: registry.example.com/minio  
    # Секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
Где формат **repository**:

- адрес — \[OBJECT\]**;**

- путь — \[OBJECT\] (для контейнера инициализации \[OBJECT\]).



## Шаг 3. Установка с помощью Helm в Kubernetes-кластер чарта elma365-dbs

Выполните установку чарта \[OBJECT\] в пространство имён **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** — \[OBJECT\];

- **bucket** — \[OBJECT\];

- **region** — \[OBJECT\];

- **access key ID** — \[OBJECT\];

- **secret access key** — \[OBJECT\];

- **upload method** — \[OBJECT\];

- **enable SSL** — \[OBJECT\].

## Удаление чарта elma365-dbs с помощью Helm в Kubernetes-кластере

````
Начало внимание

````
Перед удалением чарта \[OBJECT\] произведите резервное копирование баз данных и S3-хранилища. Удаление чарта \[OBJECT\] приведёт к полной потере данных приложения ELMA365.

````
Конец внимание

````
Выполните удаление чарта \[OBJECT\] в пространство имён **elma365-dbs**:

````
helm uninstall elma365-dbs -n elma365-dbs

````
