Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.
Руководство по установке ПО
- 1: Камунда.РФ 7
- 2: Камунда.РФ 8
- 2.1: Камунда.РФ 8 с использованием Docker Compose
- 2.2: Установка Камунда.РФ 8 в Kubernetes с Helm
- 2.3: Камунда.РФ 8 с Kafka Exporter
- 3: Камунда.РФ Пульт
1 - Камунда.РФ 7
1.1 - Камунда.РФ 7 в Spring Boot приложении
Введение
В данной инструкции описан процесс создания нового пустого Spring Boot приложения, которое при запуске автоматически поднимает Камунда.РФ 7 (Spring Boot) с использованием embedded базы данных H2.
Камунда.РФ 7 подключается как зависимость, опубликованная в корпоративном Nexus-репозитории.
Инструкция ориентирована на локальный запуск разработчиком.
Предварительные требования
-
Java 17+
-
Maven 3.8+
-
Доступ к корпоративному Nexus:
-
Maven-репозиторию
-
Создание Spring Boot проекта
Создайте новый Spring Boot проект любым удобным способом (Spring Initializr, IDEA, вручную).
Минимальные параметры:
-
Project: Maven
-
Language: Java
-
Spring Boot: 3.x
-
Packaging:
jar
Настройка доступа к Nexus (Maven)
Для загрузки зависимостей Камунда.РФ 7 из Nexus необходимо настроить аутентификацию Maven.
Откройте файл ~/.m2/settings.xml и добавьте:
<settings>
<servers>
<server>
<id>kamundarf-nexus</id>
<username>YOUR_USERNAME</username>
<password>YOUR_PASSWORD</password>
</server>
</servers>
</settings>
Далее подключите репозиторий в pom.xml:
<repositories>
<repository>
<id>kamundarf-nexus</id>
<url>https://nexus.boos.solutions/repository/kamundarf-mvn/</url>
</repository>
</repositories>
Подключение Камунда.РФ 7
Добавьте зависимости Камунда.РФ 7 в pom.xml.
<dependencies>
<!-- Содержит ядро BPMN, ProcessEngine, сервисы (RuntimeService, TaskService и др.) -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<!-- REST API: RESTful эндпоинты для взаимодействия с движком через HTTP -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<!-- Веб-интерфейсы - Cockpit (мониторинг), Tasklist (задачи), Admin (управление) -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
После этого нужно сконфигурировать Камунда.РФ 7 в файле application.yml и Камунда.РФ 7 будет автоматически сконфигурирована и поднята при старте приложения.
Минимальная конфигурация application.yml
Камунда.РФ 7 будет использовать embedded/in-memory H2 базу данных. Это удобно для локальной разработки и тестирования.
server:
port: 8080
spring:
datasource:
url: jdbc:h2:mem:process-engine;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
driver-class-name: org.h2.Driver
username: sa
password: sa
h2:
console:
enabled: true
path: /h2-console
camunda:
bpm:
history-level: full
admin-user:
id: demo
password: demo
firstName: Demo
filter:
create: All tasks
database:
schema-update: true
Запуск приложения
Локальный запуск:
mvn spring-boot:run
Или:
mvn clean package
java -jar target/camunda-demo.jar
В логах должно появиться сообщение об успешном запуске Process Engine.
После запуска:
-
Веб-интерфейс приложения будет доступен по адресу:
http://localhost:8080/camunda -
Логин:
demo -
Пароль:
demo
Использование других баз данных
Камунда.РФ 7 поддерживает различные СУБД:
-
PostgreSQL
-
H2
-
MySQL / MariaDB
-
Oracle
-
MSSQL
-
DB2
Для смены базы данных необходимо:
-
Подключить JDBC-драйвер в
pom.xml -
Изменить
spring.datasource.* -
Указать тип БД
Пример для PostgreSQL:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/camunda
username: camunda
password: camunda
driver-class-name: org.postgresql.Driver
camunda:
bpm:
database:
type: postgres
schema-update: true
Основные свойства Камунда.РФ 7 в application.yml
Ниже перечислены основные параметры конфигурации Камунда.РФ 7, которые чаще всего используются в Spring Boot приложениях.
Базовый префикс
Все свойства Камунда.РФ 7 настраиваются через префикс:
camunda:
bpm:
Настройки базы данных
camunda:
bpm:
database:
type: h2 # Тип БД: h2 | postgres | mysql | oracle | mssql
schema-update: true # true | false | create | drop-create
| Свойство | Описание |
|---|---|
|
Тип используемой базы данных |
|
Управление схемой БД ( |
Администратор Камунда.РФ 7
Создание технического пользователя при старте приложения.
camunda:
bpm:
admin-user:
id: admin
password: admin
first-name: Admin
last-name: User
email: admin@example.com
| Свойство | Описание |
|---|---|
|
Логин администратора |
|
Пароль администратора |
|
Имя |
|
Фамилия |
|
Email (необязательно) |
Web-приложение Камунда.РФ 7
camunda:
bpm:
webapp:
application-path: /camunda
| Свойство | Описание |
|---|---|
|
Контекст Камунда.РФ 7 Web App |
История и аудит
camunda:
bpm:
history-level: full # none | activity | audit | full
| Свойство | Описание |
|---|---|
|
Уровень сохранения исторических данных |
Job Executor (фоновые джобы)
camunda:
bpm:
job-execution:
enabled: true
core-pool-size: 3
max-pool-size: 10
| Свойство | Описание |
|---|---|
|
Включение Job Executor |
|
Базовое количество потоков |
|
Максимальное количество потоков |
Авторизация и безопасность
camunda:
bpm:
authorization:
enabled: true
| Свойство | Описание |
|---|---|
|
Включение авторизации Камунда.РФ 7 |
Метрики
camunda:
bpm:
metrics:
enabled: true
db-reporter-activate: true
| Свойство | Описание |
|---|---|
|
Сбор метрик движка |
|
Сбор метрик в БД |
Полный минимальный пример
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.8</version>
</parent>
<groupId>org.example</groupId>
<artifactId>camunda-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>camunda-demo</name>
<description>camunda-demo</description>
<properties>
<java.version>21</java.version>
<kamundarf.version>1.0.0-SNAPSHOT</kamundarf.version>
</properties>
<repositories>
<repository>
<id>company-nexus</id>
<url>https://nexus.boos.solutions/repository/kamundarf-mvn/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml
camunda:
bpm:
database:
type: h2
schema-update: true
admin-user:
id: admin
password: admin
history-level: full
webapp:
application-path: /camunda
Архив с примером приложения Скачать ZIP
Итог
В результате получаем:
-
Пустой Spring Boot проект
-
Камунда.РФ 7, поднимающуюся автоматически при старте
-
Embedded H2 для локальной разработки
-
Возможность легко переключиться на любую поддерживаемую БД
1.2 - Развёртывание Камунда.РФ 7 в Kubernetes с Helm
Требования к внешним сервисам и инфраструктуре
В этом разделе перечислено всё, что должно быть предварительно настроено в вашем окружении перед началом установки Камунда.РФ 7.
Инфраструктура
-
Доступы, адреса, учетные записи (предоставляются после приобретения Камунда.РФ)
-
Docker Registry, в котором лежит образ Камунда.РФ 7
-
Helm Registry, где лежит helm chart для Камунда.РФ 7
-
-
Kubernetes 1.23+
-
Helm 3.x
-
Доступ к кластеру Kubernetes (или кластер minikube)
-
Postgresql 15+
Программное обеспечение для установки
Для выполнения инструкций по установке должны быть установлены следующие утилиты:
|
Note
|
Если у вас возникли сложности с установкой idn под вашу операционную систему, замените $(idn камнуда.рф) на xn–80aalwlg5b.xn–p1ai во всех командах
|
Компоненты
В этом разделе описываются основные компоненты приложения, которые будут развернуты в Kubernetes.
Компонент |
Тип |
Камунда.РФ 7 |
Deployment |
Репозиторий и подготовка
На этом этапе подготовим окружение Kubernetes для установки Камунда.РФ 7: добавим репозиторий, настроим базу данных и создадим необходимые секреты.
Переменные окружения
Подготовьте переменные среды окружения:
export REPO_NAME="kamundarf"
export HELM_REGISTRY="oci://$(idn камунда.рф)"
export REGISTRY_USERNAME="ваш-логин"
export REGISTRY_PASSWORD="ваш-пароль"
Установите kubectl для работы с пространством имен, в котором будет производиться работа.
kubectl config set-context --current --namespace=kamundarf7 (1)
-
Если пространство не создано в кластере, создайте его командой:
kubectl create namespace kamundarf7
Авторизация в Helm-registry
В этом разделе проверяем подключение к реестру с Helm-чартами.
helm registry login $HELM_REGISTRY --username $REGISTRY_USERNAME --password $REGISTRY_PASSWORD
Параметры команды:
-
$REPO_NAME- название репозитория в вашей системе -
$HELM_REGISTRY— адрес реестра с Helm-чартом Камунда.РФ 7 -
$REGISTRY_USERNAME— имя пользователя для авторизации в реестре Helm-чартов -
$REGISTRY_PASSWORD— пароль или токен для авторизации в реестре Helm-чартов
Настройка базы данных ( postgresql )
Если у вас нет развернутой БД в кластере Кубернетес, вы можете быстро развернуть ее, используя следующую команду:
export DB_USER=kamundarf7
helm install db oci://registry-1.docker.io/bitnamicharts/postgresql --set auth.database=$DB_USER --set auth.username=$DB_USER
export DB_PASSWORD=$(kubectl get secret db-postgresql -o jsonpath="{.data.password}" | base64 -d)
Если у вас уже есть БД, то подключитесь к ней и создайте отдельного пользователя и базу данных для Камунда.РФ 7.
Создайте секрет для подключения к БД
kubectl create secret generic database-secret \
--from-literal=user=$DB_USER \
--from-literal=password=$DB_PASSWORD
Где
-
$DB_USER- имя пользователя для подключения к базе данных -
$DB_PASSWORD- пароль от пользователя для подключения к базе данных
Создание секрета доступа к Docker Registry Камунда.РФ
Чтобы Kubernetes мог скачать образ Камунда.РФ 7 из приватного реестра (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- пароль от пользователя для доступа к реестру Камунда.РФ
Подготовка values.yaml
Создайте файл kamundarf7.yaml с описанием параметров установки Камунда.РФ 7.
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
Установка чарта
Используем Helm для установки Камунда.РФ 7 в наш кластер Kubernetes, используя подготовленный файл values.yaml.
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Подключение модуля истории
Модуль истории позволяет сохранять историю процессов в Kafka-совместимый брокер сообщений. Существует два сценария подключения:
Сценарий 1: Встроенный брокер сообщений
В этом сценарии брокер сообщений разворачивается вместе с Камунда.РФ 7 в кластере Kubernetes.
Для включения встроенной Kafka внесите следующие изменения в файл kamundarf7.yaml созданный на предыдущем шаге:
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
kafka:
enabled: true
replicaCount: 1
plugins:
history:
enabled: true
useEmbedded: true
topic: process-events
rawTopic: process-events-raw
После внесения изменений выполните команду:
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Сценарий 2: Внешнний брокер сообщений
В этом сценарии используется существующий брокер сообщений развернутый в кластере Kubernetes.
Для подключения внешнего брокера внесите следующие изменения в файл kamundarf7.yaml:
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
kafka:
enabled: false
plugins:
history:
enabled: true
useEmbedded: false
bootStrapServers:
- "external-kafka:9092"
topic: process-events
После внесения изменений выполните команду:
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Ознакомьтесь с документацией по настройке модуля Истории.
Доступ к приложению
После установки необходимо проверить, что приложение запустилось корректно, и настроить к нему доступ извне кластера.
После установки проверьте сервис:
kubectl get pods
Пример вывода (требуется, чтобы в ready было 1/1)
NAME READY STATUS RESTARTS AGE
kamundarf7-78546d488d-7fr6s 1/1 Running 0 7m48s
Камунда.РФ 7 будет доступна на порту 8080 внутри кластера. Для внешнего доступа можно включить ingress.
ingress:
enabled: true
className: nginx
hosts:
- host: kamundarf-7.example.com
paths:
- path: /
pathType: Prefix
Либо можно прокинуть порт
kubectl port-forward svc/kamundarf7 8080:8080
После этой команды можно будет зайти на http://localhost:8080
Настройки Камунда.РФ 7
В этом разделе подробно описаны ключевые настройки, которые позволяют гибко настроить поведение Камунда.РФ 7. Настройки можно задавать как через переменные окружения, так и через файл values.yaml.
| Переменная | Назначение |
|---|---|
|
Указывает путь к корневому каталогу Apache Tomcat внутри контейнера. В данном случае: |
|
Класс JDBC-драйвера базы данных. Например: |
|
JDBC-URL подключения к БД. Пример: |
|
Максимальное количество активных соединений в пуле. Оптимальное значение зависит от размера БД и нагрузки. По умолчанию — |
|
Минимальное количество "ленивых" соединений — те, что доступны но неактивны. Снижает overhead на создание новых соединений. |
|
Максимальное количество неиспользуемых соединений, которые могут оставаться в пуле. Балансирует скорость против потребления ресурсов. |
|
Если |
|
Запрос для проверки активности соединения. Обычно |
|
Если не пусто, пропускает конфигурацию БД во время старта. |
|
Список зависимостей (например, адреса БД, Kafka и т.д.), которые Камунда.РФ 7 должна дождаться перед стартом. Указывается через запятые. |
|
Максимальное время (в секундах) ожидания всех зависимостей из |
|
Часовой пояс внутри контейнера. |
|
Включение отладочного режима. При |
|
Аргументы JVM. Например: |
Настройка через values.yaml
Кроме переменных окружения, настройки можно задавать через файл values.yaml. Ниже приведены основные параметры, которые можно настроить:
| Параметр | Назначение |
|---|---|
|
Количество реплик приложения. По умолчанию: |
|
Репозиторий образа Камунда.РФ 7. По умолчанию: |
|
Тег образа Камунда.РФ 7. По умолчанию: |
|
Политика загрузки образа. По умолчанию: |
|
Создавать ли ServiceAccount. По умолчанию: |
|
Тип сервиса. По умолчанию: |
|
Порт сервиса. По умолчанию: |
|
Включить ли Ingress. По умолчанию: |
|
Имя секрета с данными для подключения к БД. По умолчанию: |
|
Драйвер БД. По умолчанию: |
|
URL подключения к БД. По умолчанию: |
|
Включен ли модуль истории. По умолчанию: |
|
Топик Kafka для модуля истории. По умолчанию: |
|
Включить ли встроенную PostgreSQL. По умолчанию: |
|
Включить ли встроенную Kafka. По умолчанию: |
Параметры плагина истории
| Параметр | Назначение |
|---|---|
|
Образ плагина истории. По умолчанию: |
|
Включен ли модуль истории. По умолчанию: |
|
Режим работы плагина. По умолчанию: |
|
Источник данных. По умолчанию: пусто. |
|
Адрес источника данных. По умолчанию: пусто. |
|
Список серверов Kafka. По умолчанию: пустой список. |
|
Топик Kafka для модуля истории. По умолчанию: |
|
Топик Kafka для сырых данных. По умолчанию: |
|
Тип контента. По умолчанию: |
|
Сериализатор ключей. По умолчанию: |
|
Уровень подтверждения сообщений. По умолчанию: |
|
Количество попыток повторной отправки. По умолчанию: |
|
Время задержки перед отправкой сообщений. По умолчанию: |
|
Путь к библиотекам. По умолчанию: |
|
Использовать ли встроенную Kafka. По умолчанию: |
2 - Камунда.РФ 8
2.1 - Камунда.РФ 8 с использованием Docker Compose
Введение
В данной инструкции описан запуск Камунда.РФ 8 в локальном окружении с использованием Docker Compose.
Предварительные требования
-
Доступы, адреса, учетные записи (предоставляются после приобретения Камунда.РФ)
-
Docker Registry, в котором лежит образ Камунда.РФ 8
-
-
Docker 24+
-
Docker Compose v2
Аутентификация в Docker Registry
Образ Zeebe хранится в приватном Docker Registry, поэтому перед запуском необходимо выполнить аутентификацию.
docker login harbor.boos.solutions
Введите логин и пароль пользователя, имеющего доступ к репозиторию kamundarf/kamundarf8 (предоставляются после приобретения Камунда.РФ).
Docker Compose конфигурация
Для запуска используется следующий docker-compose.yml:
name: KamundaRF
networks:
net:
driver: bridge
services:
kamundarf8:
image: harbor.boos.solutions/kamundarf/kamundarf8:1.0.0
container_name: kamundaRF
environment:
ZEEBE_BROKER_NETWORK_HOST: 0.0.0.0
ZEEBE_BROKER_GATEWAY_CLUSTER_HOST: 0.0.0.0
ZEEBE_BROKER_GATEWAY_ENABLE: "true"
ZEEBE_RESTORE: "false"
ROCKSDB_MUSL_LIBC: "false"
ports:
- 26500:26500
- 9600:9600
extra_hosts:
host.testcontainers.internal: host-gateway
networks:
- net
Запуск приложения
Локальный запуск:
docker compose up -d
Чтобы посмотреть логи Zeebe используйте:
docker compose logs -f zeebe
Итог
В результате разворачивается локальное окружение с Камунда.РФ 8.
2.2 - Установка Камунда.РФ 8 в Kubernetes с Helm
Требования к внешним сервисам и инфраструктуре
В этом разделе перечислено всё, что должно быть предварительно настроено в вашем окружении перед началом установки.
Инфраструктура
-
Доступы, адреса, учетные записи (предоставляются после приобретения Камунда.РФ)
-
Docker Registry, в котором лежит образ Камунда.РФ 8
-
Helm Registry, где лежит helm chart для Камунда.РФ 8
-
-
Kubernetes 1.24+
-
Helm 3.x
-
Kafka >= 3.3.1
-
Доступ к кластеру и namespace
Программное обеспечение для установки
Для выполнения инструкций по установке на вашем клиентском компьютере должны быть установлены следующие утилиты.
|
Note
|
Если у вас возникли сложности с установкой idn под вашу операционную систему, замените $(idn камнуда.рф) на xn–80aalwlg5b.xn–p1ai во всех командах.
|
Репозиторий и подготовка
На этом этапе подготовим окружение Kubernetes для установки Камунда.РФ 8.
Настройте kubectl для работы с пространством имен, в котором будет производиться работа.
kubectl config set-context --current --namespace=kamundarf8 # (1)
-
Если пространство не создано в кластере, создайте его командой:
kubectl create namespace kamundarf8
Переменные окружения
Подготовьте переменные среды:
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- пароль пользователя для доступа к реестру Камунда.РФ
Установка Helm-чарта Камунда.РФ 8
Подготовка параметров развертывания
Необходимо настроить основные параметры развертывания в файле kamundarf8.yaml. Если файл отсутствует, создайте его.
global:
image:
tag: 1.0.0-SNAPSHOT
pullSecrets:
- name: krf-registry-secret # Созданный секрет для скачивания образов
elasticsearch: # Отключаем ElasticSearch
enabled: false
elasticsearch:
enabled: false
zeebe:
enabled: true # Включает деплой всех ресурсов Zeebe
debug: false # Режим отладки
# Настройка кластера Zeebe
clusterSize: "1" # Кол-во реплик брокера (узлов)
partitionCount: "2" # Кол-во партиций в кластере
replicationFactor: "1" # Фактор репликации каждой партиции
# Количество ресурсов для zeebe broker
resources:
requests:
cpu: 500m
memory: 1200Mi
limits:
cpu: 660m
memory: 1920Mi
# Хранение данных
persistenceType: disk # Используется хранилище на диске
pvcSize: "10Gi" # Размер PVC на каждого брокера
pvcAccessModes: ["ReadWriteOnce"] # Режим доступа к PVC
pvcStorageClassName: ''
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
global.image.tag |
Версия образа Камунда.РФ |
1.0.0-SNAPSHOT |
global.image.pullSecrets |
Секрет для доступа к приватному реестру |
krf-registry-secret |
global.elasticsearch.enabled |
Включение/выключение Elasticsearch |
false |
zeebe.enabled |
Включение/выключение Zeebe |
true |
zeebe.clusterSize |
Количество реплик брокера |
1 |
zeebe.partitionCount |
Количество партиций |
2 |
zeebe.replicationFactor |
Фактор репликации |
1 |
Развертывание
Используем Helm для установки Камунда.РФ 8 в наш кластер Kubernetes, используя подготовленный файл kamundarf8.yaml.
helm upgrade --install kamundarf-8 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf8 --values kamundarf8.yaml
Проверка установки
После установки проверьте статус компонентов:
kubectl get pods
kubectl get svc
Пример вывода (требуется, чтобы в столбце READY было 1/1):
NAME READY STATUS RESTARTS AGE
kamundarf-8-zeebe-0 1/1 Running 0 2m19s
kamundarf-8-zeebe-gateway-856cb4767-88lr9 1/1 Running 0 4m41s
2.3 - Камунда.РФ 8 с Kafka Exporter
Назначение Kafka Exporter
Kafka Exporter используется для публикации событий из Камунда.РФ 8 в Kafka (или Kafka-compatible брокерах, например Redpanda).
Экспортер позволяет:
-
получать события жизненного цикла процессов
-
обрабатывать события job’ов
-
сохранять историю процессов во внешних системах
-
строить аналитику и мониторинг
Предварительные требования
-
Запущенная Камунда.РФ 8
-
Kafka или Kafka-compatible брокер (например Redpanda)
-
Docker / Docker Compose
-
JAR-файл Kafka Exporter (его можно скачать из закрытого nexus-репозитория)
Структура каталогов
Рекомендуемая структура проекта:
.
├── docker-compose.yml
├── agent/
│ └── zeebe-kafka-exporter.jar
└── config/
└── broker.yaml
Каталог agent/ используется для хранения расширений Zeebe
Подключение Exporter к контейнеру Zeebe
Kafka Exporter должен быть смонтирован внутрь контейнера Zeebe.
Пример конфигурации в docker-compose.yml:
zeebe:
image: <zeebe-image>
volumes:
- ./agent/zeebe-kafka-exporter.jar:/tmp/zeebe-kafka-exporter.jar
В результате JAR-файл будет доступен в контейнере по пути:
/tmp/zeebe-kafka-exporter.jar
Конфигурация broker.yaml
Экспортер подключается через конфигурацию Zeebe Broker.
Пример минимальной настройки Kafka Exporter:
zeebe:
broker:
exporters:
kafka:
className: rf.kamunda.exporters.kafka.KafkaExporter
jarPath: /tmp/zeebe-kafka-exporter.jar
args:
producer:
servers: "redpanda:9092"
config: |
clusterName: "clusterName"
Описание параметров
| Параметр | Описание |
|---|---|
|
Полное имя класса экспортера |
|
Путь к JAR-файлу внутри контейнера |
|
Адрес Kafka брокера |
|
Название вашего кластера |
Проверка загрузки Exporter
После запуска Zeebe в логах должно появиться сообщение о загрузке экспортера.
Проверка логов:
docker compose logs -f zeebe
Ожидаемые признаки:
-
отсутствие ошибок загрузки JAR
-
сообщение об инициализации Kafka Exporter
-
успешное подключение к Kafka
Конфигурация экспортера
zeebe:
broker:
exporters:
kafka:
className: rf.kamunda.exporters.kafka.KafkaExporter
# Указывает расположение JAR-файла экспортера
jarPath: /path/to/zeebe-kafka-exporter.jar
args:
# Управляет количеством записей, буферизуемых в одном пакете,
# перед принудительной отправкой (flush).
# Значение по умолчанию — 100
maxBatchSize: 100
# Максимальное время блокировки (в миллисекундах), если пакет заполнен.
# Если пакет заполнен и приходит новая запись, экспортёр будет ждать,
# пока не освободится место в пакете, либо пока не истечёт
maxBlockingTimeoutMs: 1000
# Как часто ожидающие пакеты должны отправляться (flush)
# в Kafka-брокер.
flushIntervalMs: 1000
# Конфигурация, специфичная для Kafka-продюсера
producer:
# Список адресов подключения к Kafka-брокерам.
# Формат должен соответствовать: "host:port"
servers: "redpanda:9092"
# Определяет, сколько времени продюсер будет ждать подтверждения
# от Kafka-брокера перед повторной попыткой отправки запроса
requestTimeoutMs: 5000
# Период корректного завершения работы продюсера
# при остановке (в миллисекундах)
closeTimeoutMs: 5000
# Идентификатор Kafka-продюсера
clientId: zeebe
# Любые параметры в этом разделе будут переданы напрямую
# в ProducerConfig. Это можно использовать для настройки
# аутентификации, сжатия и т.п.
config: |
linger.ms=5
buffer.memory=8388608
batch.size=32768
max.block.ms=5000
clusterName: "myCluster"
records:
# Если тип значения записи не указан в конфигурационном файле,
# будет использовано значение, заданное в defaults
defaults: { type: "event", topic: zeebe }
# Для записей со значением типа DEPLOYMENT
deployment: { topic: zeebe-deployment }
# Для записей со значением типа DEPLOYMENT_DISTRIBUTION
deploymentDistribution: { topic: zeebe-deployment-distribution }
# Для записей со значением типа ERROR
error: { topic: zeebe-error }
# Для записей со значением типа INCIDENT
incident: { topic: zeebe-incident }
# Для записей со значением типа JOB_BATCH
jobBatch: { topic: zeebe-job-batch }
# Для записей со значением типа JOB
job: { topic: zeebe-job }
# Для записей со значением типа MESSAGE
message: { topic: zeebe-message }
# Для записей со значением типа MESSAGE_SUBSCRIPTION
messageSubscription: { topic: zeebe-message-subscription }
# Для записей со значением типа MESSAGE_START_EVENT_SUBSCRIPTION
messageStartEventSubscription: { topic: zeebe-message-subscription-start-event }
# Для записей со значением типа PROCESS
process: { topic: zeebe-process }
# Для записей со значением типа PROCESS_EVENT
processEvent: { topic: zeebe-process-event }
# Для записей со значением типа PROCESS_INSTANCE
processInstance: { topic: zeebe-process-instance }
# Для записей со значением типа PROCESS_INSTANCE_RESULT
processInstanceResult: { topic: zeebe-process-instance-result }
# Для записей со значением типа PROCESS_MESSAGE_SUBSCRIPTION
processMessageSubscription: { topic: zeebe-process-message-subscription }
# Для записей со значением типа TIMER
timer: { topic: zeebe-timer }
# Для записей со значением типа VARIABLE
variable: { topic: zeebe-variable }
Пример docker-compose файла
Важно иметь следующую структуру каталогов:
.
├── docker-compose.yml
├── agent/
│ └── zeebe-kafka-exporter.jar
└── config/
└── broker.yaml
docker-compose.yml
name: KamundaRF
networks:
net:
driver: bridge
volumes:
redpanda: null
services:
redpanda:
command:
- redpanda
- start
- --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092
- --advertise-kafka-addr internal://redpanda:9092,external://localhost:19092
- --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082
- --advertise-pandaproxy-addr internal://redpanda:8082,external://localhost:18082
- --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081
- --rpc-addr redpanda:33145
- --advertise-rpc-addr redpanda:33145
- --mode dev-container
- --smp 1
- --default-log-level=info
image: docker.redpanda.com/redpandadata/redpanda:v25.1.9
container_name: redpanda
volumes:
- redpanda:/var/lib/redpanda/data
networks:
- net
ports:
- 18081:18081
- 18082:18082
- 19092:19092
- 19644:9644
console:
container_name: redpanda-console
image: docker.redpanda.com/redpandadata/console:v3.1.3
networks:
- net
entrypoint: /bin/sh
command: -c 'echo "$$CONSOLE_CONFIG_FILE" > /tmp/config.yml; /app/console'
environment:
CONFIG_FILEPATH: /tmp/config.yml
CONSOLE_CONFIG_FILE: |
kafka:
brokers: ["redpanda:9092"]
schemaRegistry:
enabled: true
urls: ["http://redpanda:8081"]
redpanda:
adminApi:
enabled: true
urls: ["http://redpanda:9644"]
ports:
- 8080:8080
depends_on:
- redpanda
zeebe:
image: harbor.boos.solutions/kamundarf/kamundarf8:1.0.0-SNAPSHOT
depends_on:
- redpanda
volumes:
- ./agent/zeebe-kafka-exporter.jar:/tmp/zeebe-kafka-exporter.jar
- ./config/broker.yaml:/usr/local/zeebe/config/application.yaml
environment:
- ZEEBE_BROKER_NETWORK_HOST=0.0.0.0
- ZEEBE_BROKER_GATEWAY_CLUSTER_HOST=0.0.0.0
- ZEEBE_BROKER_GATEWAY_ENABLE=true
- ZEEBE_RESTORE=false
- ROCKSDB_MUSL_LIBC=false
extra_hosts:
host.testcontainers.internal: host-gateway
ports:
- 26500:26500
- 9600:9600
networks:
- net
simple-monitor:
image: ghcr.io/camunda-community-hub/zeebe-simple-monitor:2.6.0
container_name: zeebe-simple-monitor
depends_on:
- zeebe
- redpanda
networks:
- net
environment:
SPRING_PROFILES_ACTIVE: kafka
ZEEBE_CLIENT_BROKER_GATEWAYADDRESS: zeebe:26500
ZEEBE_CLIENT_SECURITY_PLAINTEXT: "true"
SPRING_KAFKA_BOOTSTRAP_SERVERS: redpanda:9092
ports:
- 8082:8082
broker.yml
zeebe:
broker:
exporters:
kafka:
className: rf.kamunda.exporters.kafka.KafkaExporter
jarPath: /tmp/zeebe-kafka-exporter.jar
args:
producer:
servers: "redpanda:9092"
config: |
linger.ms=5
buffer.memory=8388608
batch.size=32768
max.block.ms=5000
clusterName: "cluster"
Локальный запуск:
docker compose up
В результате вы получите:
| Сервис | Адрес |
|---|---|
Zeebe Gateway |
localhost:26500 |
Redpanda Console |
|
Zeebe Simple Monitor |
Здесь используется Kafka-compatible брокер - Redpanda. Отправленные сообщения можно посмотреть в Redpanda Console. Отслеживать и запускать процессы можно через Zeebe Simple Monitor.
Итог
Kafka Exporter является ключевым механизмом интеграции Камунда.РФ 8 с внешними системами хранения.
Ниже прикреплен пример в котором содержится:
-
docker-compose файл
-
Конфигурация для брокера
-
Инструкция по скачиванию экспортера
-
spring-boot приложение которое инициализирует несколько воркеров для исполнения задач и деплоит простой процесс в Камунда.РФ 8, которым можно управлять через Web-интерфейс (
localhost:8082)
3 - Камунда.РФ Пульт
3.1 - Развёртывание Камунда.РФ Пульт в 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-чарт производит установку следующих компонентов:
-
СУБД PostgreSQL – для управления данными
-
СУБД ClickHouse – как хранилище исторических данных
-
Брокер Apache Kafka – для обмена сообщениями между компонентами системы
-
Crawler – Бэк-энд компонент Камунда.РФ Пульт
-
Pult – Фронт-энд компонент Камунда.РФ Пульт
-
Keycloak – OAuth2-сервер для авторизации пользователей
-
КамундаРФ 7 – как движок бизнес процессов
Любой из компонентов, может быть развернут отдельно, основными компонентами необходимыми для работы системы являются:
-
Crawler – Бэк-энд компонент Камунда.РФ Пульт
-
Pult – Фронт-энд компонент Камунда.РФ Пульт
-
ClickHouse – как хранилище исторических данных
Подготовим файл конфигурации для установки Камунда.РФ Пульт в наш кластер Kubernetes.
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
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.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение оператора PostgreSQL |
|
|
Класс хранения для кластера БД |
|
|
Имя пользователя для базы данных Keycloak |
|
|
Имя пользователя для базы данных KamundaRF7 |
|
|
Хост внешней базы данных для Keycloak |
|
|
Имя базы данных для Keycloak |
|
Конфигурация Keycloak
Настройки аутентификации и авторизации через Keycloak.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение Keycloak |
|
|
Относительный путь для доступа к Keycloak |
|
|
Включение Ingress для Keycloak |
|
|
Доменное имя для доступа к Keycloak |
|
|
Репозиторий образа Keycloak |
|
|
Тег образа Keycloak |
|
|
Включение CLI конфигурации Keycloak |
|
|
Название realm в Keycloak |
|
|
Тема интерфейса Keycloak |
|
|
Имя пользователя по умолчанию |
|
|
Пароль пользователя по умолчанию |
|
|
ID клиента для crawler |
|
|
Секрет клиента для crawler |
|
Конфигурация Kafka
Настройки брокера сообщений Apache Kafka.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение Kafka |
|
|
Количество реплик Kafka |
|
|
Количество контроллеров Kafka |
|
|
Протокол для клиентского listener |
|
|
Порт для клиентского listener |
|
|
Порт сервиса Kafka |
|
|
Включение персистентности для Kafka |
|
|
Размер хранилища для Kafka |
|
Конфигурация ClickHouse
Настройки хранилища исторических данных ClickHouse.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение ClickHouse |
|
|
Имя пользователя ClickHouse |
|
|
Пароль пользователя ClickHouse |
|
|
Количество шардов ClickHouse |
|
|
Количество реплик ClickHouse |
|
|
Репозиторий образа ClickHouse |
|
|
Тег образа ClickHouse |
|
Конфигурация ginger-api-crawler
Настройки бэкэнд компонента Камунда.РФ Пульт.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение ginger-api-crawler |
|
|
Репозиторий образа crawler |
|
|
Тег образа crawler |
|
|
Доменное имя для crawler |
|
|
ID администратора Camunda |
|
|
Пароль администратора Camunda |
|
|
URL подключения к ClickHouse |
|
|
Адрес брокера Kafka для потребителя |
|
|
Адрес брокера Kafka для производителя |
|
|
Группа для Camunda 7 |
|
|
Группа для Camunda 8 |
|
|
Топик очереди записи |
|
Конфигурация camunda-pult
Настройки фронтэнд компонента Камунда.РФ Пульт.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение camunda-pult |
|
|
Репозиторий образа pult |
|
|
Тег образа pult |
|
|
Включение Ingress для pult |
|
|
Класс Ingress controller’а |
|
|
Доменное имя для pult |
|
|
Путь для доступа к pult |
|
|
Тип обработки пути |
|
Конфигурация kamundarf7
Настройки движка бизнес процессов Камунда.РФ 7.
| Переменная | Описание | По умолчанию |
|---|---|---|
|
Включение kamundarf7 |
|
|
Тег образа kamundarf7 |
|
|
Включение плагина истории |
|
|
Топик для истории |
|
|
Топик для сырых данных истории |
|
|
Адрес брокера Kafka |
|
|
Имя секрета с данными БД |
|
|
Ключ имени пользователя в секрете |
|
|
Ключ пароля в секрете |
|
|
Включение Ingress для kamundarf7 |
|
|
Доменное имя для kamundarf7 |
|
|
Путь для доступа к kamundarf7 |
|
|
Тип обработки пути |
|