Перейти к содержимому

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

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

Заголовок раздела «Требования к внешним сервисам и инфраструктуре»

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

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

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

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

  • Kubernetes 1.23+

  • Helm 3.x

  • Доступ к кластеру Kubernetes (или кластер minikube)

  • Postgresql 15+

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

В этом разделе описываются основные компоненты приложения, которые будут развернуты в 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 
  • Если пространство не создано в кластере, создайте его командой:

    kubectl create namespace kamundarf7

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

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

Параметры команды:

  • $REPO_NAME - название репозитория в вашей системе

  • $HELM_REGISTRY — адрес реестра с Helm-чартом Камунда.РФ 7

  • $REGISTRY_USERNAME — имя пользователя для авторизации в реестре Helm-чартов

  • $REGISTRY_PASSWORD — пароль или токен для авторизации в реестре Helm-чартов

Если у вас нет развернутой БД в кластере Кубернетес, вы можете быстро развернуть ее, используя следующую команду:

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 Камунда.РФ

Заголовок раздела «Создание секрета доступа к 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 - пароль от пользователя для доступа к реестру Камунда.РФ

Создайте файл 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-совместимый брокер сообщений. Существует два сценария подключения:

В этом сценарии брокер сообщений разворачивается вместе с Камунда.РФ 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

В этом сценарии используется существующий брокер сообщений развернутый в кластере 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. Настройки можно задавать как через переменные окружения, так и через файл 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. Ниже приведены основные параметры, которые можно настроить:

Параметр Назначение
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.