Перейти к содержанию

Подготовка окружения

Namespace

kubectl create namespace <namespace>

Если нужен сбор логов Filebeat из чарта и в кластере включён Pod Security Admission:

kubectl label namespace <namespace> pod-security.kubernetes.io/enforce=privileged

Git-репозиторий интеграций

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

  1. Создайте репозиторий и ветку, например main.
  2. Положите в корень два служебных проекта:
    • configuration: скрипт сборки build.sh и фрагмент пода сборщика builder.pod.jkube.yaml;
    • templates: шаблоны, из которых создаются новые проекты (application.properties, deployment.jkube.yaml и другие).

Готовые служебные проекты входят в комплект поставки. 3. Создайте учётную запись или токен с правом записи в эту ветку.

Не кладите в корень ветки посторонние папки: платформа покажет их как интеграции.

Реестр образов

В реестре нужны:

  • образ платформы neomsa-esb:<тег>;
  • офлайн-сборщик neomsa-esb-offline-builder:<тег>;
  • базовый образ интеграций из комплекта поставки.

Образы интеграций публикуются в группу, которую вы укажете в секрете (image-group). Учётной записи сборщика нужны права на публикацию в эту группу.

Если реестр не разрешает анонимное чтение, создайте секрет для загрузки образов:

kubectl -n <namespace> create secret docker-registry neomsa-esb-regcred \
  --docker-server=<реестр> --docker-username=<пользователь> --docker-password=<пароль>

Укажите его в values.yaml чарта:

imagePullSecrets:
  - name: neomsa-esb-regcred

Чарт передаёт этот секрет только своим подам: платформе и Filebeat. Поды сборщика и dev-режима работают под сервисной учётной записью платформы neomsa-esb, поды интеграций под учётной записью default. Чтобы и они загружали образы, после установки чарта добавьте секрет в обе учётные записи:

kubectl -n <namespace> patch serviceaccount neomsa-esb \
  -p '{"imagePullSecrets":[{"name":"neomsa-esb-regcred"}]}'
kubectl -n <namespace> patch serviceaccount default \
  -p '{"imagePullSecrets":[{"name":"neomsa-esb-regcred"}]}'

Проверить, что секрет дошёл до пода:

kubectl -n <namespace> get pod <под> -o jsonpath='{.spec.imagePullSecrets}'

Если под в состоянии ErrImagePull или ImagePullBackOff, причину покажут события пода (kubectl describe pod <под>): неверный адрес или тег, нет прав, реестр недоступен из сети узлов или его сертификат не доверен.

Секрет платформы

Значения подключения к git, реестру и базе данных хранятся в секрете neomsa-esb. Чарт создаёт его из шаблона templates/neomsa-esb-secret.yaml. Перед установкой заполните значения в начале этого шаблона:

Ключ Что указать
git-repository Адрес репозитория интеграций, https://<git-сервер>/<группа>/<репозиторий>.git
git-branch Ветка интеграций
git-username, git-password Учётная запись или токен с правом записи
image-registry Адрес реестра
image-group Группа (проект) реестра для образов интеграций
image-registry-username, image-registry-password Учётная запись с правом публикации
db-url, db-username, db-password Подключение к PostgreSQL, например jdbc:postgresql://postgres:5432/karavan
oidc-secret Секрет клиента сервера в провайдере OIDC. Нужен в режимах sso и sso+local

Ключ master-password не используется, его можно не заполнять.

Значения в секрете Kubernetes записываются в base64. Заполняйте только значения в начале шаблона, ключи чарт сформирует сам. Значения git он дополнительно записывает под ключами karavan.git.*: по ним платформа загружает проекты из репозитория. Не удаляйте эти ключи из шаблона, иначе после входа интерфейс не дождётся загрузки проектов.

Пароль встроенной базы PostgreSQL задаётся в шаблоне templates/postgres/postgres.yaml (секрет postgres-secret). Замените его и укажите тот же пароль в db-password.

Внимание

Не храните реальные пароли и токены в git-репозитории чарта. Заполняйте шаблоны секретов на машине, с которой выполняется установка, и не отправляйте эти правки в общий репозиторий.

Платформа берёт ветку интеграций из ключа git-branch секрета. Сменить ветку из интерфейса нельзя.

Начальный пароль локальных пользователей

При первом запуске с локальным входом платформа создаёт пользователей admin и developer с паролем из переменной PLATFORM_PASSWORD. Создайте для пароля отдельный секрет до установки. Запишите пароль в файл без перевода строки в конце и выполните:

kubectl -n <namespace> create secret generic neomsa-esb-bootstrap \
  --from-file=password=<файл с паролем>

Секрет подключается в values.yaml, пример есть в разделе Установка Helm-чартом.