Развёртывание Камунда.РФ 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)
  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.

kamundarf7.yaml
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.

Переменная Назначение

CATALINA_HOME

Указывает путь к корневому каталогу Apache Tomcat внутри контейнера. В данном случае: server/apache-tomcat-10.1.42/.

DB_DRIVER

Класс JDBC-драйвера базы данных. Например: org.postgresql.Driver или com.mysql.cj.jdbc.Driver.

DB_URL

JDBC-URL подключения к БД. Пример: jdbc:postgresql://db-host:5432/kamundarf7.

DB_CONN_MAXACTIVE

Максимальное количество активных соединений в пуле. Оптимальное значение зависит от размера БД и нагрузки. По умолчанию — 20.

DB_CONN_MINIDLE

Минимальное количество "ленивых" соединений — те, что доступны но неактивны. Снижает overhead на создание новых соединений.

DB_CONN_MAXIDLE

Максимальное количество неиспользуемых соединений, которые могут оставаться в пуле. Балансирует скорость против потребления ресурсов.

DB_VALIDATE_ON_BORROW

Если true, соединение будет валидироваться при взятии из пула (например, через SELECT 1).

DB_VALIDATION_QUERY

Запрос для проверки активности соединения. Обычно SELECT 1 — универсальный для любой БД.

SKIP_DB_CONFIG

Если не пусто, пропускает конфигурацию БД во время старта.

WAIT_FOR

Список зависимостей (например, адреса БД, Kafka и т.д.), которые Камунда.РФ 7 должна дождаться перед стартом. Указывается через запятые.

WAIT_FOR_TIMEOUT

Максимальное время (в секундах) ожидания всех зависимостей из WAIT_FOR. После превышения таймера контейнер завершится с ошибкой.

TZ

Часовой пояс внутри контейнера. UTC — стандарт для продакшн, чтобы избежать рассинхронизации логов.

DEBUG

Включение отладочного режима. При true будут активированы расширенные логи.

JAVA_OPTS

Аргументы JVM. Например: -Xms512m -Xmx1024m -XX:+UseG1GC. Позволяет тонко настроить GC, heap, профилирование и безопасность.

Настройка через values.yaml

Кроме переменных окружения, настройки можно задавать через файл values.yaml. Ниже приведены основные параметры, которые можно настроить:

Параметр Назначение

replicaCount

Количество реплик приложения. По умолчанию: 1.

image.repository

Репозиторий образа Камунда.РФ 7. По умолчанию: камунда.рф/kamundarf/kamundarf-tomcat.

image.tag

Тег образа Камунда.РФ 7. По умолчанию: 1.0.0.

image.pullPolicy

Политика загрузки образа. По умолчанию: IfNotPresent.

serviceAccount.create

Создавать ли ServiceAccount. По умолчанию: false.

service.type

Тип сервиса. По умолчанию: ClusterIP.

service.port

Порт сервиса. По умолчанию: 8080.

ingress.enabled

Включить ли Ingress. По умолчанию: false.

db.secretName

Имя секрета с данными для подключения к БД. По умолчанию: database-secret.

db.driver

Драйвер БД. По умолчанию: org.postgresql.Driver.

db.url

URL подключения к БД. По умолчанию: jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/kamundarf7.

plugins.history.enabled

Включен ли модуль истории. По умолчанию: false.

plugins.history.topic

Топик Kafka для модуля истории. По умолчанию: data.

postgresql.enabled

Включить ли встроенную PostgreSQL. По умолчанию: false.

kafka.enabled

Включить ли встроенную Kafka. По умолчанию: false.

Параметры плагина истории

Параметр Назначение

plugins.history.image

Образ плагина истории. По умолчанию: камунда.рф/kamundarf/other/ginger-ext-c7-history:1.0.2.

plugins.history.enabled

Включен ли модуль истории. По умолчанию: false.

plugins.history.mode

Режим работы плагина. По умолчанию: ALL.

plugins.history.source

Источник данных. По умолчанию: пусто.

plugins.history.sourceAddress

Адрес источника данных. По умолчанию: пусто.

plugins.history.bootStrapServers

Список серверов Kafka. По умолчанию: пустой список.

plugins.history.topic

Топик Kafka для модуля истории. По умолчанию: data.

plugins.history.rawTopic

Топик Kafka для сырых данных. По умолчанию: raw-data.

plugins.history.contentType

Тип контента. По умолчанию: JSON.

plugins.history.keySerializer

Сериализатор ключей. По умолчанию: org.apache.kafka.common.serialization.StringSerializer.

plugins.history.acks

Уровень подтверждения сообщений. По умолчанию: all.

plugins.history.retries

Количество попыток повторной отправки. По умолчанию: 3.

plugins.history.lingerMs

Время задержки перед отправкой сообщений. По умолчанию: 1.

plugins.history.libs

Путь к библиотекам. По умолчанию: /libs.

plugins.history.useEmbedded

Использовать ли встроенную Kafka. По умолчанию: false.