Развёртывание Камунда.РФ Пульт в Kubernetes с Helm

Требования к внешним сервисам и инфраструктуре

В этом разделе перечислено всё, что должно быть предварительно настроено в вашем окружении перед началом установки Камунда.РФ Пульт.

Инфраструктура

  • Доступы, адреса, учетные записи (предоставляются после приобретения Камунда.РФ)

    • Docker Registry, в котором лежит образ Камунда.РФ 7

    • Helm Registry, где лежит helm chart для Камунда.РФ 7

  • Kubernetes 1.23+

  • Helm 3.x

  • Доступ к кластеру Kubernetes

Программное обеспечение для установки

Для выполнения инструкций по установке на вашем клиентском компьютере должны быть установлены следующие утилиты.

Note
Если у вас возникли сложности с установкой idn под вашу операционную систему, замените $(idn камнуда.рф) на xn–80aalwlg5b.xn–p1ai во всех командах.

Репозиторий и подготовка

На этом этапе мы подготовим окружение Kubernetes для установки Камунда.РФ Пульт: добавим репозиторий, создадим необходимые секреты и настроим конфигурацию.

Переменные окружения

Подготовьте переменные среды:

export REPO_NAME="kamundarf"
export HELM_REGISTRY="oci://$(idn камунда.рф)"
export REGISTRY_USERNAME="ваш-логин"
export REGISTRY_PASSWORD="ваш-пароль"

Авторизация в Helm-registry

В этом разделе проверяем подключение к реестру с Helm-чартами.

helm registry login $HELM_REGISTRY --username $REGISTRY_USERNAME --password $REGISTRY_PASSWORD

Создание секрета доступа к Docker Registry Камунда.РФ

Чтобы Kubernetes мог скачать образ Камунда.РФ 8 из приватного реестра (docker registry), необходимо создать секрет с данными для аутентификации.

kubectl create secret docker-registry krf-registry-secret \
  --docker-server=$(idn камунда.рф) \
  --docker-username=$REGISTRY_USERNAME \
  --docker-password=$REGISTRY_PASSWORD \
  --docker-email=devops@yourdomain.com

Где

  • $REGISTRY_USERNAME - имя пользователя для доступа к реестру Камунда.РФ

  • $REGISTRY_PASSWORD - пароль пользователя для доступа к реестру Камунда.РФ

Подготовка pult.yaml

Создаем файл pult.yaml, в котором переопределяем стандартные настройки Helm-чарта под наши нужды: указываем наш образ, настраиваем доступ к API и настраиваем ingress для внешнего доступа.

Минимально требуется переопределить следующие переменные:

Tip
> Надо создать файл pult.yaml

В конфигурации по умолчанию Helm-чарт производит установку следующих компонентов:

  1. СУБД PostgreSQL – для управления данными

  2. СУБД ClickHouse – как хранилище исторических данных

  3. Брокер Apache Kafka  – для обмена сообщениями между компонентами системы

  4. Crawler – Бэк-энд компонент Камунда.РФ Пульт

  5. Pult – Фронт-энд компонент Камунда.РФ Пульт

  6. Keycloak – OAuth2-сервер для авторизации пользователей

  7. КамундаРФ 7 – как движок бизнес процессов

Любой из компонентов, может быть развернут отдельно, основными компонентами необходимыми для работы системы являются:

  1. Crawler – Бэк-энд компонент Камунда.РФ Пульт

  2. Pult – Фронт-энд компонент Камунда.РФ Пульт

  3. ClickHouse – как хранилище исторических данных

Подготовим файл конфигурации для установки Камунда.РФ Пульт в наш кластер Kubernetes.

pult.yaml
keycloak:
  domain: pult.test

ginger-api-crawler:
  domain: pult.test

camunda-pult:
  domain: pult.test

kamundarf7:
  domain: pult.test

Установка чарта

После подготовки файла окружения развернем наше решение.

helm upgrade --install pult oci://$(idn камунда.рф)/kamundarf/helmstore/pult-all-in-one --values pult.yaml

Как добавить новый сервер

Внесите изменения в файл pult.yaml

pult.yaml
ginger-api-crawler:
  domain: xpult.test
  crawler:
    servers:
      # Идентификатор сервера
      new-server:
        # Тип сервера Cam7 - Сервер KamundaRF7 Cam8 - Сервер KamundaRF8
        type: Cam7
        name: "Новый сервер" # Название сервера для отображения в интерфейсе
        servers: # Полный путь к RestApi сервера
          - "http://some-external-service/camunda/engine-rest"
        topic: ext-service # Имя топика для обмена сообщениями
        auth: # Способ авторизации сервера
          type: none

Настройки

Конфигурация базы данных

Настройки подключения к базам данных PostgreSQL и ClickHouse.

Переменная Описание По умолчанию

postgres-operator.enabled

Включение оператора PostgreSQL

true

db_cluster.storageClass

Класс хранения для кластера БД

standard

db_cluster.databases.keycloak.user

Имя пользователя для базы данных Keycloak

keycloak

db_cluster.databases.kamundarf7.user

Имя пользователя для базы данных KamundaRF7

kamundarf7

keycloak.externalDatabase.host

Хост внешней базы данных для Keycloak

db

keycloak.externalDatabase.database

Имя базы данных для Keycloak

keycloak

Конфигурация Keycloak

Настройки аутентификации и авторизации через Keycloak.

Переменная Описание По умолчанию

keycloak.enabled

Включение Keycloak

true

keycloak.httpRelativePath

Относительный путь для доступа к Keycloak

/auth/

keycloak.ingress.enabled

Включение Ingress для Keycloak

true

keycloak.ingress.hostname

Доменное имя для доступа к Keycloak

{{ .Values.domain }}

keycloak.image.repository

Репозиторий образа Keycloak

kamundarf/other/keycloak

keycloak.image.tag

Тег образа Keycloak

0.0.2

keycloak.keycloakConfigCli.enabled

Включение CLI конфигурации Keycloak

true

keycloak.keycloakConfigCli.configuration.master.yaml.realm

Название realm в Keycloak

master

keycloak.keycloakConfigCli.configuration.master.yaml.loginTheme

Тема интерфейса Keycloak

pult

keycloak.keycloakConfigCli.configuration.master.yaml.users[0].username

Имя пользователя по умолчанию

testuser

keycloak.keycloakConfigCli.configuration.master.yaml.users[0].credentials[0].value

Пароль пользователя по умолчанию

password

keycloak.keycloakConfigCli.configuration.master.yaml.clients[0].clientId

ID клиента для crawler

crawler

keycloak.keycloakConfigCli.configuration.master.yaml.clients[0].secret

Секрет клиента для crawler

test

Конфигурация Kafka

Настройки брокера сообщений Apache Kafka.

Переменная Описание По умолчанию

kafka.enabled

Включение Kafka

true

kafka.replicaCount

Количество реплик Kafka

1

kafka.controller.replicaCount

Количество контроллеров Kafka

1

kafka.listeners.client.protocol

Протокол для клиентского listener

PLAINTEXT

kafka.listeners.client.containerPort

Порт для клиентского listener

9092

kafka.service.ports.client

Порт сервиса Kafka

9092

kafka.persistence.enabled

Включение персистентности для Kafka

true

kafka.persistence.size

Размер хранилища для Kafka

8Gi

Конфигурация ClickHouse

Настройки хранилища исторических данных ClickHouse.

Переменная Описание По умолчанию

clickhouse.enabled

Включение ClickHouse

true

clickhouse.auth.username

Имя пользователя ClickHouse

test

clickhouse.auth.password

Пароль пользователя ClickHouse

test

clickhouse.shards

Количество шардов ClickHouse

1

clickhouse.replicaCount

Количество реплик ClickHouse

1

clickhouse.image.repository

Репозиторий образа ClickHouse

bitnamilegacy/clickhouse

clickhouse.image.tag

Тег образа ClickHouse

25.7.5

Конфигурация ginger-api-crawler

Настройки бэкэнд компонента Камунда.РФ Пульт.

Переменная Описание По умолчанию

ginger-api-crawler.enabled

Включение ginger-api-crawler

true

ginger-api-crawler.image.repository

Репозиторий образа crawler

kamundarf/other/crawler

ginger-api-crawler.image.tag

Тег образа crawler

0.0.1-SNAPSHOT

ginger-api-crawler.ingresHost

Доменное имя для crawler

{{ .Values.domain }}

ginger-api-crawler.camunda.bpm.adminUser.id

ID администратора Camunda

demo

ginger-api-crawler.camunda.bpm.adminUser.password

Пароль администратора Camunda

demo

ginger-api-crawler.spring.datasource.url

URL подключения к ClickHouse

jdbc:clickhouse://{{ .Release.Name }}-clickhouse:8123/default

ginger-api-crawler.spring.kafka.consumer.bootstrapServers

Адрес брокера Kafka для потребителя

{{ .Release.Name }}-kafka:9092

ginger-api-crawler.spring.kafka.producer.bootstrapServers

Адрес брокера Kafka для производителя

{{ .Release.Name }}-kafka:9092

ginger-api-crawler.crawler.camunda7GroupId

Группа для Camunda 7

kam7

ginger-api-crawler.crawler.camunda8GroupId

Группа для Camunda 8

kam8

ginger-api-crawler.crawler.writeQueue.topic

Топик очереди записи

write-queue

Конфигурация camunda-pult

Настройки фронтэнд компонента Камунда.РФ Пульт.

Переменная Описание По умолчанию

camunda-pult.enabled

Включение camunda-pult

true

camunda-pult.image.repository

Репозиторий образа pult

xn–80aalwlg5b.xn–p1ai/kamundarf/pult

camunda-pult.image.tag

Тег образа pult

10478db6

camunda-pult.ingress.enabled

Включение Ingress для pult

true

camunda-pult.ingress.className

Класс Ingress controller’а

nginx

camunda-pult.ingress.hosts[0].host

Доменное имя для pult

{{ .Values.domain }}

camunda-pult.ingress.hosts[0].paths[0].path

Путь для доступа к pult

/

camunda-pult.ingress.hosts[0].paths[0].pathType

Тип обработки пути

ImplementationSpecific

Конфигурация kamundarf7

Настройки движка бизнес процессов Камунда.РФ 7.

Переменная Описание По умолчанию

kamundarf7.enabled

Включение kamundarf7

true

kamundarf7.image.tag

Тег образа kamundarf7

1.0.0-SNAPSHOT

kamundarf7.plugins.history.enabled

Включение плагина истории

true

kamundarf7.plugins.history.topic

Топик для истории

kamundarf7-raw

kamundarf7.plugins.history.rawTopic

Топик для сырых данных истории

kamundarf7-raw

kamundarf7.plugins.history.bootStrapServers[0]

Адрес брокера Kafka

paio-kafka:9092

kamundarf7.db.secretName

Имя секрета с данными БД

kamundarf7.db.credentials.postgresql.acid.zalan.do

kamundarf7.db.secretUsernameKey

Ключ имени пользователя в секрете

username

kamundarf7.db.secretPasswordKey

Ключ пароля в секрете

password

kamundarf7.ingress.enabled

Включение Ingress для kamundarf7

true

kamundarf7.ingress.hosts[0].host

Доменное имя для kamundarf7

{{ .Values.domain }}

kamundarf7.ingress.hosts[0].paths[0].path

Путь для доступа к kamundarf7

/camunda

kamundarf7.ingress.hosts[0].paths[0].pathType

Тип обработки пути

ImplementationSpecific