При развертывании в среде kubernites предоставляются helm-манифесты для всех компонент платформы за исключение БД Postgres/БД Cassandra и MQTT брокер.
Вариант развертывания также может предполагать, что часть инфраструктурнх сервисов будет установлена на выделенных сервисах.
Порядок установки на выделенный сервер описан в разделе локальной установки.
Ниже приведен порядок развертывания в предположении, что все компоненты будут установлены в среде кубернитес, кроме обозначенных выше.
helm repo add inspark http://releases.inspark.ru/stable/ --username <> --password <>
(Логин и пароль к helm репозиторию передается в рамках партнерского соглашения).
Выполнить команду
helm repo update
Создать namespace в кластере К8 (например example
)
kubectl create namespace example
Установить секрет для доступа к реестру докеров
helm install privat-registry inspark/semnext_secret -n example
Установить том для хранения медиа-данных
helm install media-files inspark/semnext_pvc -n example
Если в среде K8 нет хранилища, этот шаг можно пропустить. По умолчанию в helm модулях указано значение Empty
для хранилищ. Но, такая конфигурация не подходит для продуктивных сред.
helm install dbmemory --set persistence.size=250Mi inspark/redis -n example
helm install jms -f env-jms.yaml inspark/activemq -n example
Размер persistence определяет глубину хранения очередей с данными. 4Gb вполне достаточно для временного хранения до 1 млн. записей. Рост записей в очередях происходит в случае неработоспособности основных модулей в случае нештатной ситуации, либо их перестарта. Учитывайте скорость поступления измерений и время возможной потери доступности модулей при установке этого параметра.
В файле env-jms.yaml
укажите ресурсы:
persistence:
accessModes:
- ReadWriteOnce
enabled: true
path: /var/lib/artemis/data
size: 4Gi
resources:
limits:
cpu: 1000m
memory: 1536Mi
requests:
cpu: 500m
memory: 1024Mi
Перед запуском основных модулей следует убедится, что развернуты и штатно работат следующие сервисы:
Развертывание БД :
helm install migrator -n env-migrator inspark/migrator -n example
В файле env-migrator.yml указать правильные параметры подключения к хранилищам:
global:
environment:
pg_host: "<адрес БД>"
pg_db: "semdb"
pg_user: "postgres"
pg_pass: "postgres"
store_type: "CASSANDRA"
store_nodes: "10.10.10.1:9042,10.10.10.2:9042,10.10.10.3:9042"
store_user: "infsys"
store_datacenter: "datacenter1"
store_password: "password"
redis_host: "dbmemory.example"
ports:
pg_port: 5434
redis_port: 6379
images:
migrator: registry.infsys.ru/iss/semona-migrator
pullPolicy: Always
# tag задает метку для сборок semona-xxxx (все идут всегда с одним тегом)
tag: "3.6"
Выше показан вариант настройки для хранения измерений в Cassandra. Если используется Postgres, то настройки store_...
можно не указывать.
Имена и номера портов уточняются перед запуском мигратора.
Если redis развернут в K8 уточните имена и порты по команде:
kubectl get svc -n example
Мигратор развернет в БД semdb и infsys.datacenter1 все таблицы, подготовит хранилища к работе.
Важно! Укажите последнюю версию мигратора (см. параметр tag).
Развертывание основных сервисов:
helm install semona -f env.yaml inspark/semnext -n example
В файле env.yaml уточните параметры подключения, версии докеров, ресурсы для развертывания, параметры ingress сервиса. Полное описание представлено в файле value.yml
для helm чарта semnext
.
После установки Core модулей, платформа готова принимать данные, можно разворачивать модули приема/отправки данных:
// основной модуль приема данных по MQTT
helm install handler -f env-handler.yaml inspark/semona-handler -n example
// модуль обработки данных от LoraWAN устройств
helm install lora -f env-lorain.yaml inspark/lorain -n example
// модуль обработки данных от NbIoT устройств
helm install lora -f env-nbiotgate.yaml inspark/nbiotgate -n example
Если в платформе не используются устройства LoraWAN и NbIOT, соответствующие модули можно не запускать.
Развертывание модуля уведомлений:
На последнем шаге необходимо запустить модуль уведомлений.
helm install eventer -f env-notifier.yaml inspark/notifier -n example
В файле env-notifier.yaml правильно укажите параметры подключенияк БД postgres и artemis (см. пример ниже)
global:
environment:
pg_host: "10.10.10.1"
pg_db: "semdb"
pg_user: "postgres"
pg_pass: "postgres"
jms_host: "activemq.example"
ports:
pg_port: 5434
На этом основные действия по развертыванию платформы завершены. Пробуйте загрузить web приложение платформы по имени, которое было указано в настройках ingress.
Если ingress не использовался, то в файле env.yaml
для секции proxy необходимо задать NodePort
proxy:
image:
repository: registry.infsys.ru/iss/semona-proxy
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
tag: "6"
service:
type: NodePort
Внимание! Лицензионные ограничения определены данными лицензии. В #6 helm манифеста необходимо указать данные лицензионного ключа. Если эти данные отсутствуют, то загружается POC лицензия. При нарушении лицензионных условий работа системы прерывается.