Начало внимание
В статье приведена устаревшая инструкция для ELMA365 On-Premises. Об актуальной установке в Kubernetes читайте в статье «Установка ELMA365 Enterprise».
Конец внимание
ELMA365 On-Premises можно установить с использованием Helm v.3 в уже существующий Kubernetes-кластер.
Установленная версия кластера должна поддерживать Kubernetes API версии не ниже 1.21. Должно быть также разрешено проксирование из подов во внешнюю сеть.
ELMA365 поставляется в виде двух Helm-чартов, которые устанавливаются поочерёдно:
- elma365-dbs — набор баз данных и хранилищ, необходимых для работы ELMA365. Также есть возможность использовать собственные базы данных PostgreSQL, MongoDB, Redis, RabbitMQ, хранилище S3, указав строки подключения к ним
values
чарта elma365. При этом в файлеvalues-dbs.yaml
установку соответствующих компонентов можно отключить, выставив значениеfalse
, например для PostgreSQL:global.postgresql.enabled
. Если все пять компонентов чарта будут выставлены вfalse
, то установка этого чарта не требуется. Узнать больше о создании баз данных вы можете из раздела «Подготовка внешних баз данных»; - elma365 — чарт с ELMA365.
начало внимание
Чарты elma365-extension больше не поддерживаются. Переход на чарты elma365-dbs с новыми версиями баз данных выполняется с помощью дампа и его восстановления.
конец внимание
Ссылки для скачивания Helm-чартов
- elma365-dbs — dl.elma365.com/onPremise/latest/elma365-dbs-latest.tar.gz;
- elma365 — https://dl.elma365.com/onPremise/latest/elma365-latest.tar.gz.
Подробнее об адресах для скачивания ELMA365 читайте в статье «Ссылки для скачивания дистрибутивов ELMA365».
Установка чарта elma365-dbs
- Заполните переменные в файле
values-dbs.yaml
. При использовании своих баз данных установку встроенных баз можно отключить. - Если требуется создать отдельный
namespace
, укажите его во всех командах установки. - Выполните команду:
helm upgrade --install elma365-dbs ./elma365-dbs -f values-dbs.yaml [-n namespace]
Обратите внимание, аргументы в квадратных скобках опциональны. Если вы используете такой аргумент, указывайте его без скобок.
Установка чарта elma365
- Заполните переменные в файле
values-elma365.yaml
. - Если необходимо восстановить дамп, перед установкой ELMA365 вы можете воспользоваться утилитой elma365-backupper или выполнить скрипт
elma365db.sh
из чарта elma365.
Пример выполнения скрипта:
./elma365db.sh --restore --namespace elma365 --path /backup/path/ [--kubeconfig /path/to/config --context prod]
- Выполните установку командой:
helm upgrade --install elma365 ./elma365 -f values-elma365.yaml --timeout=30m --wait [-n namespace]
- Сохраните файл
values-elma365.yaml
для последующих обновлений. - Для создания дампа можно воспользоваться утилитой elma365-backupper или скриптом
elma365db.sh
.
Пример выполнения скрипта:
./elma365db.sh --dump --namespace elma365 --path /backup/path/ [--kubeconfig /path/to/config --context prod]
Установка средств мониторинга (опционально)
- Скачайте Helm-чарт дополнительного набора инструментов addons по ссылке: https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz.
- В файле
values-addons.yaml
в блокеgrafana
иkube-prometheus-stack
укажите требуемыйnamespace
для сервиса мониторинга, напримерnamespaceOverride: monitoring
, и адрес, по которому будет доступен сервис мониторинга. - Создайте
namespace
для сервиса мониторинга командой:
kubectl create namespace monitoring
- Выполните установку чарта командой:
helm upgrade --install addons ./addons -f values-addons.yaml
- В файле
values-elma365.yaml
чарта elma365 включите дэшборды:
dashboard:
enabled:true
- Обновите приложение ELMA365 командой:
helm upgrade elma365 ./elma365 -f values-elma365.yaml --timeout=30m
Установка Linkerd и автомасштабирование сервисов (опционально)
Linkerd — это выделенный уровень инфраструктуры, который помогает обрабатывать связь между сервисами, автоматически шифровать соединения, обрабатывать повторные запросы и тайм-ауты, использовать телеметрию (коэффициент успешности, задержки) и т. д.
- Скачайте Helm-чарт дополнительного набора инструментов addons по ссылке: https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz.
- Сгенерируйте сертификаты с помощью
openssl
, выполнив команды ниже. Linkerd требует сертификат привязки доверия и сертификаты эмитента с соответствующим ключом для поддержки взаимных TLS-соединений между сервисами, для всех сертификатов требуется алгоритм ECDSA P-256.
# Создать закрытый ключ CA
openssl ecparam -name prime256v1 -genkey -noout -out ca-private.pem
# Создать открытый ключ CA
openssl ec -in ca-private.pem -pubout -out ca-public.pem
# Создать самоподписанный сертификат CA
openssl req -x509 -new -key ca-private.pem -days 365 -out ca.crt -subj "/CN=root.linkerd.cluster.local"
# Создать закрытый ключ эмитента
openssl ecparam -name prime256v1 -genkey -noout -out issuer-private.pem
# Создать открытый ключ эмитента
openssl ec -in issuer-private.pem -pubout -out issuer-public.pem
# Создать запрос на подпись сертификата
openssl req -new -key issuer-private.pem -out issuer.csr -subj "/CN=identity.linkerd.cluster.local" -addext basicConstraints=critical,CA:TRUE
# Создать сертификат эмитента, подписав запрос
openssl x509 \
-extfile /etc/ssl/openssl.cnf \
-extensions v3_ca \
-req \
-in issuer.csr \
-days 180 \
-CA ca.crt \
-CAkey ca-private.pem \
-CAcreateserial \
-extensions v3_ca \
-out issuer.crt
# Удалить запрос на подпись сертификата
rm issuer.csr
- Включить параметр
linkerd2
в файлеvalues-addons.yaml
чарта addons:
linkerd2:
enabled:true
- В разделе
linkerd2
укажите требуемыйnamespace
для сервиса Linkerd (например,namespace: linkerd
) и содержимое сертификатов, ключа и срок действия сертификатаcrtExpiry
. Обратите внимание, значение должно соответствовать дате истечения срока действия сертификата эмитента.
identityTrustAnchorsPEM: |
-----BEGIN CERTIFICATE-----
содержимое сертификата ca.crt
-----END CERTIFICATE-----
identity:
issuer:
crtExpiry: 2023-03-30T05:28:39Z
tls:
crtPEM: |
-----BEGIN CERTIFICATE-----
содержимое сертификата issuer.crt
-----END CERTIFICATE-----
keyPEM: |
-----BEGIN EC PRIVATE KEY-----
содержимое сертификата issuer-private.pem
-----END EC PRIVATE KEY-----
- Выполните установку чарта командой:
helm upgrade --install addons ./addons -f values-addons.yaml
- Добавьте аннотацию на
namespace
с приложением ELMA365 для автоматической инъекции контейнеров Linkerd-proxy в сервисы ELMA365 командой:
kubectl annotate namespace default linkerd.io/inject=enabled
- Включить автомасштабирование сервисов параметром
autoscaling
в файлеvalues-elma365.yaml
через elma365:
autoscaling:
enabled:true
- Обновите приложение ELMA365 командой:
helm upgrade elma365 ./elma365 -f values-elma365.yaml --timeout=30m
- Перезапустите все сервисы командой:
kubectl rollout restart deploy [-n namespace] && kubectl rollout restart ds [-n namespace]
Установка NodeLocal DNS Cache (опционально)
Установка NodeLocal DNS Cache
позволяет снизить нагрузку по DNS-запросам в кластере Kubernetes и повысить стабильность преобразования DNS-имён. Это позволит избежать правил DNAT, connection tracking и ограничений по количеству соединений.
Для установки:
- Скачайте Helm-чарт дополнительного набора инструментов addons по ссылке: https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz.
- Получите IP-адрес сервиса kube-dns:
kubectl get svc kube-dns -n kube-system -o jsonpath={.spec.clusterIP}
- В чарте addons в файле
values-addons.yaml
в блокеnode-local-dns
настройте следующие параметры:
pillar_dns_domain
— домен кластера;pillar_dns_server
— IP-адрес сервиса kube-dns;pillar_local_dns
— локальный IP-адрес для NodeLocal DNS Cache.
- Выполните установку чарта командой:
helm upgrade --install addons ./addons -f values-addons.yaml
Обновление версии ELMA365
В новом чарте замените файл values-elma365.yaml
файлом, сохранённым на этапе установки, а затем выполните команду:
helm upgrade --install elma365 ./elma365 -f values-elma365.yaml --timeout=30m --wait [-n namespace]
В случае изменения строк подключения (сonnection strings) к БД при обновлении приложения перезапустите все сервисы командой:
kubectl rollout restart deploy [-n namespace] && kubectl rollout restart ds [-n namespace]
Удаление
Для удаления чартов выполните команды:
helm uninstall elma365 [-n namespace]
helm uninstall elma365-dbs [-n namespace]