﻿# Установка ELMA365 Enterprise в Kubernetes

> [HTML Version](installing-elma365-enterprise.html)

Приложение ELMA365 On-Premises устанавливается в Kubernetes-кластер. В работе используются СУБД PostgreSQL, MongoDB, Valkey или Redis, шина событий RabbitMQ и объектное хранилище данных S3. Подробнее об этом читайте в статье [«Архитектура»](architecture.md).

Перед началом установки ознакомьтесь с [системными требованиями ELMA365 On-Premises Enterprise](elma365-enterprise-on-premises.md).

Установка состоит из пяти этапов:

1. [Подготовка инфраструктуры (опционально)](#infrastructure-preparation-optional).

2. [Скачивание Helm-чарта и конфигурационного файла](#download-helm-chart-config-file).

3. [Заполнение конфигурационного файла](#complete-configuration-file).

4. [Установка с помощью Helm в Kubernetes-кластер приложения ELMA365](#installation-using-helm-elma365).

5. [Установка дополнений для приложения ELMA365 (опционально)](#installing-add-ons).

Во время установки приложения ELMA365 вы можете [отслеживать состояние подов и просматривать их логи](#state).

## Шаг 1. Подготовка инфраструктуры (опционально)

Под инфраструктурой понимаются необходимые для работы приложения ELMA365 On‑Premises компоненты.

````
Начало внимание

````
Клиент самостоятельно разворачивает зависимые компоненты. Все работы по организации отказоустойчивой локальной архитектуры, настройке отказоустойчивости зависимых компонентов также остаются на стороне клиента.

````
Конец внимание

````
Компоненты, необходимые для работы приложения ELMA365 On-Premises:

- Kubernetes-кластер;

- PostgreSQL;

- MongoDB;

- RabbitMQ;

- Valkey или Redis;

- S3.

В рамках текущей статьи базы данных и S3-хранилище установлены в Kubernetes-кластер по статье [«Подготовка встроенных баз данных»](embedded-databases-settings.md) и используют стандартные строки подключения и пароли. Такая конфигурация приведена только как пример для ознакомительной установки и не является рекомендацией для продуктивной эксплуатации. Для продуктивной среды рекомендуем размещать [PostgreSQL](postgresql.md), [MongoDB](mongodb.md), [S3](seaweedfs.md) на отдельных внешних ресурсах.

Требования к конфигурациям компонентов

#### Kubernetes

Система устанавливается при помощи Helm в Kubernetes-кластер, который содержит следующие компоненты: **ingress-nginx контроллер**, **coredns**, **rbac**, **storageclass**. Поддерживаемые версии Kubernetes и Helm смотрите в статье [«Системные требования ELMA365 On-Premises»](elma365-enterprise-on-premises.md#kubernetes). 

Кроме того, должно быть разрешено проксирование из подов во внешнюю сеть.

Подробнее о том, как развернуть Kubernetes-кластер, читайте в статьях раздела [«Kubernetes»](kubernetes-deckhouse-air-gap.md).

#### Хранение данных

Вы можете использовать свои уже существующие базы данных и хранилище S3 в качестве компонентов для приложения ELMA365 On-Premises. Также есть возможность комбинирования своих компонентов и компонентов, развёрнутых с использованием чартов \[OBJECT\] или \[OBJECT\]. В продуктивной среде рекомендуем устанавливать и настраивать внешние PostgreSQL, MongoDB, S3. 

На следующих этапах установки потребуется указать строки подключения к базам данных и хранилищу S3.

При необходимости развёртывания всех или только недостающих компонентов воспользуйтесь статьями раздела [«Базы данных»](configure-postgresql.md).

#### Отказоустойчивость

Чтобы обеспечить непрерывную работу ELMA365 на Bare-metal серверах, требуется собрать отказоустойчивый Kubernetes-кластер и обеспечить отказоустойчивую работу используемых баз данных и хранилища S3.

Подробнее о построении высокодоступной среды ELMA365 читайте в разделе [«Подготовка инфраструктуры»](infrastructure-preparation.md).

#### Офлайн-установка (Air-gap)

Можно установить ELMA365 в закрытом окружении, из которого нет прямого доступа к внешнему хранилищу образов контейнеров. Для этого необходимо на компьютере с доступом в интернет скачать образы приложения ELMA365 и импортировать их в локальный репозиторий образов. Подробнее читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

Данный раздел можно пропустить, если требования к конфигурациям компонентов соблюдены и потребности в развёртывании необходимых для работы приложения ELMA365 On-Premises компонентов нет.

## Шаг 2. Скачивание Helm-чарта и конфигурационного файла

При установке через интернет получите конфигурационный файл \[OBJECT\]:

- для актуальной latest-версии системы используйте команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/elma365 > values-elma365.yaml

- ````
для определённой версии системы в команду \[OBJECT\] добавьте флаг \[OBJECT\]:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/elma365 --version <elma365-chart-version> > values-elma365.yaml 

````
где \[OBJECT\] — нужная версия системы.

Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов. Подробнее читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Скачайте архив актуальной latest-версии чарта ELMA365 On-Premises из репозитория **elma365**, выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/elma365

3. ````
Скопируйте полученный архив чарта \[OBJECT\] на сервер, где будет производиться установка.

4. Распакуйте полученный чарт на сервере и скопируйте конфигурационный файл по умолчанию \[OBJECT\] в \[OBJECT\]. Для этого выполните следующую команду:

````
tar -xf elma365-X.Y.Z.tgz  
cp elma365/values.yaml values-elma365.yaml

````


Вы также можете загрузить файл формата **.tar.gz** с определённой версией ELMA365 с помощью адресов, перечисленных в статье [«Ссылки для скачивания дистрибутивов ](links-for-install-elma365.md#links-for-install-helm)[ELMA365 On-Premises»](https://elma365.com/ru/help/platform/links-for-install-elma365.html). 

## Шаг 3. Заполнение конфигурационного файла

Для быстрого старта приложения заполните основные параметры:

- \[OBJECT\] — домен (FQDN) или IP-адрес, по которому будет доступна система. IP-адрес допустим только в ограниченных сценариях, например, если не используется Ingress/Nginx с host-based routing и TLS с SNI;

- \[OBJECT\] — укажите устанавливаемую редакцию приложения ELMA365;

- \[OBJECT\] — электронная почта администратора;

- \[OBJECT\] — пароль администратора. Используйте [допустимые символы](#permitted-symbols);

- \[OBJECT\] — строка подключения к БД PostgreSQL;

- \[OBJECT\] — строка подключения к БД MongoDB для приложения;

- \[OBJECT\] — строка подключения к БД MongoDB для сервера авторизации;

- \[OBJECT\] — строка подключения к Valkey или Redis;

- \[OBJECT\] — строка подключения к RabbitMQ;

- \[OBJECT\] — метод запросов к S3;

- \[OBJECT\] — имя пользователя S3;

- \[OBJECT\] — пароль для пользователя S3. Используйте [допустимые символы](#permitted-symbols);

- \[OBJECT\] — бакет S3;

- \[OBJECT\] — адрес S3;

- \[OBJECT\] — регион S3;

- \[OBJECT\] — включение SSL S3.

````
начало примечание

````
**Примечание**

Для паролей разрешается применять следующие символы:

- заглавные латинские буквы: от A до Z;

- строчные латинские буквы: от a до z;

- цифры от 0 до 9;

- символы:  -\_.

Зарезервированные (недопустимые) символы:

\! \* ' ( ) ; : @ \& = + \$ , / ? % # \[ \] \{ \}

````
конец примечание

````
Заполните переменные в файле \[OBJECT\], выполнив следующие действия:

1. В параметре \[OBJECT\] задайте домен FQDN или ip-адрес, по которому будет доступна система.

В статье [«Подготовка встроенных баз данных»](embedded-databases-settings.md) на шаге 1 было подготовлено хранилище S3 MinIO, которое доступно по домену (FQDN) \[OBJECT\]. При использовании встроенного хранилища S3, доступного по домену (FQDN), приложение ELMA365 должно быть доступно по этому же доменному имени. Чтобы это сделать, в \[OBJECT\] необходимо указать \[OBJECT\] и включить привязку \[OBJECT\] к домену \[OBJECT\]. Для этого в параметре \[OBJECT\] установите значение \[OBJECT\].

````
global:  
  ## домен (FQDN) или ip-адрес, по которому будет доступна система  
  host: 'elma365\_server.your\_domain'  
  ingress:  
    hostEnabled: true

2. ````
В параметре ````
\[OBJECT\] ````
укажите редакцию ELMA365: ````
\[OBJECT\]````
 или ````
\[OBJECT\].

3. ````
В разделе ````
\[OBJECT\] ````
заполните параметры создания компании. Она создастся при установке ELMA365.

4. Задайте адрес электронной почты администратора в параметре ````
\[OBJECT\]````
. Этот адрес будет являться логином для входа главного администратора.

````
Начало внимание

````
Логин главного администратора нельзя изменить после установки системы.

````
Конец внимание

5. ````
В параметре ````
\[OBJECT\] ````
укажите согласно вашей политики безопасности, пароль для входа главного администратора, используя [допустимые символы](#permitted-symbols).

6. В параметре ````
\[OBJECT\] ````
задайте язык компании, например ````
\[OBJECT\]````
:

````
bootstrapCompany:  
  ## эл. почта администратора  
  email: "admin@mail.com"  
  ## пароль администратора  
  password: "test"  
  ## язык установленной системы, возможные варианты: "ru-RU", "en-US", "sk-SK"  
  locale: "ru-RU"

7. ````
В параметре ````
\[OBJECT\] ````
задайте язык устанавливаемой системы, например ````
\[OBJECT\]````
:

````
language:  
  ## язык установленной системы, возможные варианты: "ru-RU", "en-US", "sk-SK"  
  default: "ru-RU"

8. ````
Заполните строки [подключения к базам данных](change-settings-enterprise.md#connection-kb) PostgreSQL, MongoDB, RabbitMQ, Valkey или Redis, используя параметры ````
\[OBJECT\]````
, ````
\[OBJECT\]````
, ````
\[OBJECT\]````
, ````
\[OBJECT\]````
, ````
\[OBJECT\]````
:

````
db:  
  ## строка подключения к БД Postgres, формат: postgresql://user:password@hostname:5432/databaseName  
  psqlUrl: 'postgres://postgres:pgpassword@postgres.elma365-dbs.svc.cluster.local:5432/elma365?sslmode=disable'  
  ## строка подключения к БД Postgres только для чтения, формат: postgresql://user:password@hostname:5432/databaseName  
  roPsqlUrl: ''  
  ## cтрока подключения к БД MongoDB для приложения, формат: mongodb://user:password@hostname:27017/databaseName  
  mongoUrl: 'mongodb://elma365:mongopassword@mongo.elma365-dbs.svc.cluster.local:27017/elma365?ssl=false\&replicaSet=rs0\&readPreference=secondaryPreferred'  
  ## cтрока подключения к БД MongoDB для сервера авторизации, формат: mongodb://user:password@hostname:27017/databaseName  
  vahterMongoUrl: 'mongodb://elma365:mongopassword@mongo.elma365-dbs.svc.cluster.local:27017/elma365?ssl=false\&replicaSet=rs0\&readPreference=secondaryPreferred'  
  ## cтрока подключения к Redis, формат: redis://user:password@redis.local:6379/databaseName  
  redisUrl: 'redis://redis.elma365-dbs.svc.cluster.local:6379/0'  
  ## cтрока подключения к Rabbit, формат amqp://user:password@hostname:5672/vhost  
  amqpUrl: 'amqp://elma365:rmqpassword@rabbitmq.elma365-dbs.svc.cluster.local:5672/elma365'

9. ````
Заполните [параметры подключения](change-settings-enterprise.md#connection-s3) к S3-хранилищу файлов:

- ````
\[OBJECT\]````
 — метод запросов к S3;

- ````
\[OBJECT\]````
 — имя пользователя S3;

- ````
\[OBJECT\]````
 — пароль для пользователя S3. Используйте [допустимые символы](#permitted-symbols);

- ````
\[OBJECT\]````
 — бакет S3;

- ````
\[OBJECT\]````
 — адрес S3;

- ````
\[OBJECT\]````
 — регион S3;

- ````
\[OBJECT\]````
 — включение SSL S3.

````
db:  
  s3:  
    method: PUT  
    accesskeyid: PZSF73JG72Ksd955JKU1HIA  
    secretaccesskey: aFDkj28Jbs2JKbnvJH678MNwiz88zKjsuNBHHs  
    bucket: s3elma365  
    backend:  
      address: elma365\_server.your\_domain  
      region: us-east-1  
    ssl:  
      enabled: "false"

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

1. Задайте адрес и путь в параметре \[OBJECT\].

2. Укажите наименование секрета с правами доступа к приватному registry в параметре \[OBJECT\]. Приватный registry должен быть создан вручную и зашифрован в Base64.

````
global:  
  # Адрес и путь для приватного registry  
  image:  
    repository: registry.example.com/images/elma365  
    # Секрет с правами доступа к приватному registry должен быть создан вручную, зашифрованный в Base64  
    pullSecret:  
      - name: myRegistryKeySecretName

````
  
где формат \[OBJECT\]:

	- \[OBJECT\]` `— адрес;

	- \[OBJECT\]` `— путь.



Конфигурационный файл \[OBJECT\] содержит большое количество параметров приложения ELMA365 On-Premises. Полное руководство по заполнению переменных в этом файле читайте в статье [«Изменение параметров ELMA365 Enterprise»](change-settings-enterprise.md).

## Шаг 4. Установка приложения ELMA365 в Kubernetes-кластер с помощью Helm

1. Если пространство имён для установки ELMA365 ещё не создано, добавьте его с помощью команды:

````
kubectl create namespace elma365

````
где `elma365` — название пространства имён.

2. Этот шаг выполняется опционально. Чтобы в текущей сессии не указывать в командах пространство имён, в контексте Kubernetes вы можете установить пространство имён по умолчанию. Для этого укажите значение `elma365` с помощью команды:

````
kubectl config set-context --current --namespace=elma365

3. ````
В пространстве имён для установки ELMA365 измените значение для политики безопасности Deckhouse на \[OBJECT\], чтобы избежать ошибок при разворачивании сервисов. Для этого выполните команду:

````
kubectl label namespace elma365 security.deckhouse.io/pod-policy=privileged --overwrite

4. ````
Установите приложение ELMA365 Enterprise с использованием конфигурационного файла \[OBJECT\]. Если требуется установить приложение в отдельное пространство имён, укажите его в команде установки:

````
helm upgrade --install elma365 elma365/elma365 \\  
\-f values-elma365.yaml \\  
\--timeout=30m --wait -n elma365

````
Чтобы установить приложение ELMA365 Enterprise в закрытом контуре без доступа в интернет, выполните следующую команду:

````
helm upgrade --install elma365 ./elma365 \\  
\-f values-elma365.yaml \\  
\--timeout=30m --wait -n elma365

````
Время установки приложения ELMA365 Enterprise занимает 10-30 минут. Дождитесь обновления параметров приложения ELMA365 Enterprise.

5. Запустите браузер и откройте страницу входа в приложение ELMA365 Enterprise по адресу \[OBJECT\]`.` Параметр \[OBJECT\] был указан в конфигурационном файле \[OBJECT\] на шаге [скачивания helm-чарта и конфигурационного файла](#download-helm-chart-config-file). 

В приведённом примере используется следующий адрес страницы входа в приложение ELMA365 Enterprise: \[OBJECT\].

**(installing-elma365-enterprise-1.png)**

6. В качестве логина и пароля укажите адрес электронной почты администратора и пароль, который использовали в конфигурационном файле \[OBJECT\]  в параметрах \[OBJECT\] и \[OBJECT\].  
  
В приведённом примере используются:

- **Логин** — **admin@mail.com**;

- **Пароль** — **test**.

7. Нажмите кнопку **Войти в систему**.  
  
Откроется окно активации системы ELMA365.

8. Активируйте систему. Подробнее об этом читайте в статье [«Активация ELMA365 On-Premises»](activate_on_premise.md).  
  
Установка приложения ELMA365 редакции Enterprise успешно закончена.

````
Начало внимание

````
Сохраните конфигурационный файл \[OBJECT\] для последующих обновлений.

````
Конец внимание

## ````
Шаг 5. Установка дополнений для приложения ELMA365 (опционально)

Под дополнениями для приложения ELMA365 понимаются компоненты, расширяющие функциональные и инфраструктурные возможности приложения ELMA365.

Список дополнений:

- для ELMA365 Enterprise Kubernetes:

	- система маршрутизации (Service Mesh) [Linkerd](install-linkerd.md);

	- [система мониторинга Prometheus + Grafana](install-monitoring-tools.md);

	- [Descheduler](install-descheduler.md);

	- [NodeLocal DNSCache](install-nodelocal-dns-cache.md);

	- [Kyverno](install-kyverno.md);

	- [KEDA](install-keda.md);

	- сервис [Аудит безопасности](install-audit-service.md) для версий системы до 2026.4;

- для ELMA365 Standard Kubernetes:

	- система маршрутизации (Service Mesh)[ Linkerd](https://elma365.com/ru/help/platform/install-linkerd.html);

	- сервис [Аудит безопасности](install-audit-service.md) для версий системы до 2026.4.

Дополнения устанавливаются по необходимости, с учётом имеющейся инфраструктуры. Принять решение об установке помогут статьи раздела [«Установка дополнений для приложения ELMA365»](install-descheduler.md).

## Отслеживание состояния приложения ELMA365

Во время установки приложения ELMA365 вы можете использовать следующие команды:



1. Для мониторинга состояния подов в реальном времени:

````
kubectl get pods -n elma365 -w 

````


Позволяет в режиме реального времени отслеживать статусы всех подов в пространстве имён **elma365**. Можно увидеть, когда поды стартуют, перезапускаются или завершают работу с ошибкой.



2. Для просмотра логов пода:

````
kubectl logs -f <имя\_пода> -n elma365````
 



где:

- `<имя\_пода>` — имя нужного пода;

- `-f` — следить за новыми записями.

