РАЗВЕРТЫВАНИЕ СИСТЕМЫ. PORTAINER

Получение архива дистрибутива системы

Для получения ссылки на загрузку архива и пароль от него направьте на адрес службы поддержки пользователей support@dppm.pro обращение: «Предоставьте доступ на загрузку архива и пароль от него для компании Х», только после предоставления доступа выполните нижеописанные действия.

По полученной ссылке скачайте архив (например planr_ХХХ.х.zip, где Х номер версии ПО). Структура архива устроена следующим образом (Рисунок 2):

register imageСтруктура каталогов дистрибутива

  • Каталог planr – содержит набор файлов конфигурации PLAN-R и всех необходимых сервисов.
    • stop.sh – файл bash-скрипта, останавливающий систему PLAN-R;
    • start.sh – файл bash-скрипта, запускающий систему PLAN-R;
    • .env – переменные среды, отвечающие за настройку системы PLAN-R (Подробная информация представлена в разделе Переменные окружения);
    • Файл docker-compose.yml – файл, содержащий все настройки системы PLAN-R и сервисов необходимых для работы системы;
    • Каталог /scripts – содержит скрипты для бэкапа базы данных postgresql (dump.sh) и восстановления из бэкапа базы данных (restore.sh) (см. п. 8.4.2 Настройка бэкапов системы)
    • Каталог /logging – содержит необходимые файлы конфигурации для системы логирования (Grafana, Loki, Fluent-bit);
  • Каталог images – содержит заархивированные docker-образы системы PLAN-R и всех необходимых компонентов привязанных к версии ПО.
    • load.sh – файл bash-скрипта, который выполняет загрузки docker-образов из архива;
    • push-to-registry.sh – файл bash-скрипта, выполняет загрузку образов в приватный репозиторий;
  • planr-x.x.x.tgz – heml chart для установки в среде Kubernetes (Preview) (см. п. 8.5 Установка PLAN-R в Kubernetes (preview)).

Скачанный архив рекомендуется скопировать в каталог /opt/dppm/dist, предварительно его создав, если он не существует.

Подготовка к установке (Linux)

Для установки ПО PLAN-R необходимо выполнить следующую последовательность операций:

  1. Убедится, что установлено необходимое ПО Docker (19.03.0+) и docker-compose (1.27.1+)
# docker --version
Docker version 24.0.7, build afdd53b

# docker-compose –version
Docker Compose version v2.23.3-desktop.2
  1. Рекомендуется подготовить структуру каталогов для развертывания системы.

Рекомендуемая структура каталогов:

  • /opt/dppm/ – каталог текущей развернутой системы
  • /opt/dppm/distr – каталог для хранения скачанных дистрибутивов
  • /opt/dppm/postgres_dump – каталог для бэкапов базы данных

Создайте структуру каталогов выполнив следующие команды.

# mkdir /opt/dppm && mkdir /opt/dppm/distr && mkdir /opt/dppm/postgres_dump
# cd /opt/dppm
# ls -lha

total 16K
drwxr-xr-x 4 root root 4.0K Mar 28 14:05 .
drwxr-xr-x 5 root root 4.0K Mar 28 14:05 ..
drwxr-xr-x 2 root root 4.0K Mar 28 14:05 distr
drwxr-xr-x 2 root root 4.0K Mar 28 14:05 postgres_dump
  1. Переместите скачанный дистрибутив в каталог /opt/dppm/distr/
# mv <path*to_distr>/planr*<_version_>.zip /opt/dppm/distr/
# cd /opt/dppm/distr
# ls -la

total 2638584
drwxr-xr-x 2 root root       4096 Mar 28 14:05 .
drwxr-xr-x 4 root root       4096 Mar 28 14:05 ..
-rw-r-xr-x 1 root root 2701895280 Mar 28 14:05 planr_XXX.x.zip
  1. Извлеките файлы из архива в каталог /opt/dppm, выполнив команды в соответствующем порядке (пароль можно получить по запросу на почту support@dppm.pro)
# unzip -P <_password_> /opt/dppm/distr/planr\_<_version_>.zip -d /opt/dppm/
# ls -lha

register imageИзвлечение файлов приложения из архива

  1. После распаковки архива переходим в каталог /opt/dppm/images для загрузки docker образов командой ./load.sh. После успешной загрузки образов каталог ./images можно удалить.
  • cd /opt/dppm/images
  • ./load.sh

register imageРаспаковка образов PLAN-R

Установка PLAN-R (Linux)

  1. Выполняем подготовку к установке (8.2.1 Подготовка к установке (Linux))
  2. Переходим в директорию /opt/dppm/planr/, редактируем файл с переменными среды .env (8.4 Конфигурирование системы)
  3. Выполняем старт системы с помощью ./start.sh

register imageУспешный старт системы

Установка PLAN-R (Portainer)

  1. Установить ПО Portainer (https://www.portainer.io/install) или использовать уже существующий.
  2. Выполняем подготовку к установке (8.2.1 Подготовка к установке (Linux))
  3. В Portainer заходим в stacks (1) ->Add stack (2), создаём новый стак с названием planr.

register imageСоздание нового стака

  1. Копируем все конфигурацию из файла /opt/dppm/planr/docker-compose.yml в поле Web Editor (1), и содержимое файла с переменными среды /opt/dppm/planr/.env в поле Environment variables (2). Обязательно добавляем в переменные среды ENV_FILE=stack.env (3), это необходимо для того, чтобы Portainer считал заданные переменные среды из поля environment variables.

register imageНастройка файлов конфигурации для Portainer

  1. Если планируется использовать систему логирования - необходимо указать абсолютный путь до файлов конфигурации, которые лежат на сервере, где установлен Portainer. Для этого находимо найти сервисы Grafana, loki, fluent-bit и указать абсолютный путь до файлов конфигурации на сервере.

register imageУказание абсолютного пути к фалам конфигурации

  1. Производим конфигурирование системы путём изменения переменных среды в поле Environment variables. (8.4 Конфигурирование системы)
  2. Нажимаем кнопку “Deploy the stack” и убеждаемся, что контейнеры запустились.

register imageРабота системы PLAN-R в Portainer

Установка PLAN-R (Windows)

  1. Скачать и установить Docker Desktop следуя инструкциям по ссылке https://docs.docker.com/desktop/install/windows-install
  2. Создать директорию для развертывания, например С:\Plan-r.
  3. Скачать архив с последней версией дистрибутива.
  4. Разархивировать содержимое архива в директорию С:\Plan-r с помощью специальных программ-архиваторов например WinRar. Во время разархивации программа должна запросить пароль (пароль можно получить через запрос в службу поддержки support@dppm.pro).
  5. Запустить консоль PowerShell от имени администратора и выполнить следующие команды:
    • cd C:\Plan-r \planr-r _ <_version_>\images
    • Get-ChildItem .\ *.tar | foreach {docker load --input $ _.FullName}

register imageЗагрузка образов системы в Docker

  1. Перейти в директорию C:\Plan-r \planr_<version>\planr. Сконфигурировать систему путём изменения файла с переменными среды .env под свои нужды (8.4 Конфигурирование системы). Запустить PLAN-R следующей командой.
  • cd C:\PLAN-R\planr_403.0\planr\
  • docker compose --env-file ./.env -p "planr" up -d

register imageСтарт приложения PLAN-R

  1. Зайти в приложение Docker Desktop и убедится, что всё работает корректно.

register imageРаботающее приложение PLAN-R

Обновление системы

Подготовка к обновлению системы

  1. Перед проведением обновления системы, рекомендуется выполнить резервное копирование (см. п. 8.4.2.1 Создание бэкапа базы данных перед обновлением)
  2. Перейти в папку разворота системы по умолчанию /opt/dppm/planr. Остановить систему, сделать бэкап текущей конфигурации PLAN-R, перенеся текущий каталог разворота в каталог /opt/dppm/planr_old/planr
  • cd /opt/dppm/planr
  • ./stop.sh
  • mv /opt/dppm/planr/planr opt/dppm/planr_old/ planr

register imageБэкапирование предыдущих настроек

  1. Переместите скачанный дистрибутив в каталог /opt/dppm/distr/
  • $ mv <path_to_distr> /planr_ <version>.zip /opt/dppm/distr/
  • $ cd /opt/dppm/distr
  • $ ls -lha

register imageПеремещение скачанного архива в каталог

  1. Извлеките файлы из архива в каталог /opt/dppm, выполнив команды в соответствующем порядке (пароль можно получить по запросу на почту support@dppm.pro)
  • unzip -P <password> /opt/dppm/distr/planr_<version>.zip -d /opt/dppm/
  • ls -lha

register imageИзвлечение файлов приложения из архива

  1. После распаковки архива переходим в директорию ./images для загрузки docker образов командой ./load.sh. После успешной загрузки образов каталог ./images можно удалить.
  • cd /opt/dppm/images_<version>
  • ./load.sh

register imageРаспаковка образов PLAN-R

Обновление системы PLAN-R (Linux)

  1. Выполняем подготовку к обновлению системы (8.3.2 Обновление системы PLAN-R (Linux))
  2. Выполняем слияние актуального файла конфигурации .env и файла конфигурации созданного ранее (находящегося в директории /opt/dppm/planrold/planr_ <_version>). Вносим необходимые изменения в переменные среды если требуется (8.4 Конфигурирование системы)
  3. Запускаем систему командой ./start.sh

register imageУспешный старт системы

Обновление PLAN-R в Portaiener

  1. Выполняем подготовку к обновлению системы (см. п. 8.4.2.1 Создание бэкапа базы данных перед обновлением).
  2. Вставляем содержимое актуального файла docker-compose.yml из архива с актуальной версией в окошко (1)

register imageОбновление файла конфигурации docker-compose.yaml в Portainer

  1. Выполняем слияние актуального файла конфигурации .env, находящегося в поле Environment variables.. Вносим необходимые изменения в переменные среды если требуется (8.4 Конфигурирование системы)
  2. Выполняем обновление нажав кнопку Update the stack (1).

register imageКнопка обновления стака в Portainer

Конфигурирование системы

Переменные среды

Файл переменных среды. env (Environment variables если используется Portainer) содержит в себе все настройки системы, которые применяются при старте. После изменения файла с переменными среды, для применения настроек, нужно выполнить ./start.sh для вступления изменений в силу. Описание всех переменных среды приведено в таблице ниже.

Таблица 4. Описание значений переменной COMPOSE_PROFILES

Название переменной Пример Описание
1 2 3
DB_URL postgresql://planr:planr@postgres/planr Строка подключения к базе данных PostreSQL.
MB_URL amqp://planr:planr@rabbitmq/planr Строка подключения к брокеру сообщений.
REDIS_PASSWORD redis_password Пароль для аунтификации в redis
REDIS_URL redis://:${REDIS_PASSWORD}@redis:6379 Строка подключения к кешу данных Redis.
LOCAL_AUTH_ENABLED true Использовать локальную аутентификацию, для хранения паролей используется база данных.
LDAP_AUTH_ENABLED true Использовать аутентификацию через Active Directory параметры подключения настраиваются через Web консоль администрирования (Подробнее в пункте 17 Интеграция с Active Directory)
KERBEROS_ENABLED true Включение SSO авторизации через Kerberos (см. п. 8.4.4.2 Настройка SSO Kerberos)
KERBEROS_CONF_PATH /etc/krb5.conf Путь к файлу конфигурации kr5.conf на сервере
KERBEROS_KEYTAB_PATH /etc/krb5_multi.keytab Пусть к сгенерированому keytab файлу на сервере. (см. п. 8.4.4.2.1 Генерация keytab файла)
API_KEY_AUTH_ENABLED true Включить аутентификацию с помощью API ключей, используется для доступа сторонних приложений. Для настройки перейдите в управление пользователями в Web консоли администрирования. (Подробнее в пункте 14.2 Управление API токенами)
FILE_TOKEN_SECRET GeneRaTeDComPaNyToken Рандомная строка, используемая для подписи файлов, выгружаемых для пользователя. Должна быть сгенерирована и заменена при первоначальной настройке системы.
FILE_TOKEN_EXPIRESIN 24h Время жизни токена
JWT_SECRET HggHdtd467Gg67 Строка для подписи JWT токена аутентификации. Должна быть сгенерирована и заменена при первоначальной настройке системы.
EXTEND_LOGS true Вывод в логи подробной информации о событиях.
Настройка прокси (8.4.3 Настройка прокси)
PROXY_PORT 80 Внешний порт сервера, который будет открыт при старте приложения
PROXY_SSL_PORT 443 Внешний порт сервера, который будет открыть при старте для защищённого HTTPS соединения
PROXY_SSL_ENABLED false Включение/выключение HTTPS на выбранном PROXY_SSL_PORT
PROXY_CERT_PATH /etc/ssl/planr.pem Путь к сертификату, выданному удостоверяющим центром компании для HTTPS соединения. Для применения сертификата переменная PROXY_SSL_ENABLED должна содержать значение true
PROXY_API_ENABLED true Включение/выключение доступа к публичному api по адресу FQDN/public-api
PROXY_SWAGGER_ENABLED true Включение/выключение доступа к публичному api по адресу FQDN/swagger
Масштабирование приложения
MAIN_REPLICA 1 Количество реплик main контейнера
ADMIN_REPLICA 1 Количество реплик admin контейнера
PLANR_WORKER_REPLICA 8 Количество реплик planr-worker контейнера
IMPEX_WORKER_REPLICA 8 Количество реплик impex-worker контейнера
BACKUP_WORKER_REPLICA 1 Количество реплик backup-worker контейнера
AAS_WORKER_REPLICA 1 Количество реплик aas-worker контейнера
LOGGER_WORKER_REPLICA 1 Количество реплик logger-worker контейнера
SCHEDULE_WORKER_REPLICA 1 Количество реплик schedule-worker контейнера
NOTICE_WORKER_REPLICA 1 Количество реплик notice-worker контейнера
STORAGE_WORKER_REPLICA 1 Количество реплик storage контейнера
COSTR_WORKER_REPLICA 1 Количество реплик costr-worker контейнера
DOCS_REPLICA 1 Количество реплик docs контейнера
API_REPLICA 1 Количество реплик api контейнера
KERBEROS_REPLICA 1 Количество реплик kerberos контейнера
Настройки аутентификации через OIDC (8.4.4.1 Настройка аутентификации через OIDC на примере keycloack)
OPENID_ISSUER https://OIDC.DOMANIN.COM/realms/REALMNAME Область авторизации.
OPENID_AUTHORIZATIONURL https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/auth URL-адрес для авторизации.
OPENID_TOKENURL https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/token URL-адрес для получения пользовательского токена.
OPENID_USERINFOURL https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/userinfo URL-адрес для получения информации о пользователе.
OPENID_CLIENTID planrclient Идентификатор клиента.
OPENID_CLIENTSECRET lzkfjhwo3587hnafh Секретный ключ клиента.
OPENID_CALLBACKURL http://PLANR-HOST/api/v1/auth/openid URL-адрес обратного вызова, вызывается после процесса аутентификации.

Для контроля запуска нужных сервисов используется переменная COMPOSE_PROFILES (https://docs.docker.com/compose/profiles/).

Например, если планируется использовать внешнюю базу данных, то её профиль необходимо исключить, тогда переменная примет следующие значения

  • COMPOSE_PROFILES=main,redis,rabbitmq,logging

Описание доступных профилей для старта указано в следующей таблице.

Таблица 5. Значение переменной COMPOSE_PROFILES

Значение переменной COMPOSE_PROFILESОписание
12
allСтарт приложения со всеми сервисами входящими в комплект поставки в полной конфигурации.
mainСтарт только основного приложения PLAN-R, без внешних сервисов, в этом случаи нужно обеспечить подключение приложения к необходимым сервисам postgresql, redis, rabbitmq и/или системе логирования.
kerberosПрофиль для старта сервиса, реализующего Kerberos SSO.
postgresПрофиль для старта базы данных PostgreSQL из комплекта поставки.
rabbitmqПрофиль для старта брокера сообщений RabbitMQ из комплекта поставки.
redisПрофиль для старта кеша данных Redis из комплекта поставки.
loggingСтарт системы логирования (Fluent-bit -> Loki -> Grafana).

Настройка бэкапов системы

Создание бэкапа базы данных перед обновлением

Для создания бэкапов базы данных перед обновлением можно использовать несколько способов:

  • Создание бэкапа с помощью скрипта ./dump.sh входящим в комплект поставки Для этого выполните скрипт dump.sh. Данный скрип создаст бэкап базы данных на текущий момент в директории /opt/dppm/postgres_dump
    • ./dump.sh -p /opt/dppm/postgres_dump

register imageСоздание бэкапа базы данных перед обновлением

  • Создание бэкапа встроенными средствами Для этого переходим в директорию /opt/dppm/postges_dump (создаём, если её не существует) и выполняем следующую команду.
    • docker exec postgres /bin/bash -c "export PGPASSWORD=planr && pg_dump -U planr planr" | gzip -9 > planr_latest.sql.gz
    • ls -lha

register imageСоздание бэкапа базы данных перед обновлением

Настройка бэкапов по расписанию

Для созданию бэкапов по расписанию необходимо добавить скрипт dump.sh в таблицу исполнения скриптов по расписанию crontab. Параметры запуска скрипта можно посмотреть, выполнив ./dump.sh -h.

register imageПараметры запуска скрипта dump.sh

Пример использования скрипта в crontab приведен ниже. В данном случае скрипт выполняется каждую ночь в 3:00, делает бэкап в директорию /opt/dppm/postgres_dump/ с периодом ротации 14 (Это означает что в папке всегда будет хранится 14 актуальных бэкапов) и количеством файлов, которые не удалятся в любом случаи – 5.

register imageИсполнение скрипта по расписанию

Восстановление базы данных из бэкапа

Для восстановления базы данных из бэкапа используем скрипт ./restore.sh. Пример использования скрипта по восстановлению базы данных из бэкапа представлен на рисунке ниже.

register imageВосстановление базы из файла бэкапа

Способы аутентификации

Настройка аутентификации через OIDC на примере keycloack

Настройка интеграции с OIDC провайдерами настраивается с помощью переменных среды в файле ./planr/.env. Описание необходимы переменных среды можно найти в таблице (см. Таблица 4. Описание значений переменной COMPOSE_PROFILES )

Заходим в keyclocak, создаём новый realm с именем Planr, либо используем уже существующий. Переходим в созданный или существующий Realm, нажимаем “Realm setting” и скачиваем файл “OpenID Endpoint Configuration”.

register imageСкачивание файла OpenID Endpoint Configuration

Переходим во вкладку “Clients” и создаем клиента. Во вкладке Capability Setting обязательно включить “Client authentication”. В вкладке “Login Settings” обязательно указать Valid redirect URLs (тут нужно указать FQDN хоста, на котором развернут PLAN-R, например https://PLAN-R.ru/*).

register imageСоздание клиента для Planr realm

register imageВключение Client authentication

register imageУказание Valid redirect URLs

Переходим к настройкам переменных среды в файле ./planr/.env. Открываем ранее скачанный файл OpenID Endpoint Configuration.json (справа на скриншоте) и сопоставляем данные для авторизации с переменными среды. Значение переменной OPENDID_CLIENTID и OPENID_CLIENTSECRET можно взять из Keycloak, перейдя в нужный Realm, далее открыть созданного ранее клиента planr и перейти на вкладку “Сredentials”. Переменная OPENID_CALLBACKURL должна содержать FQDN хоста, на котором развернут PLAN-R в формате http://PLANR-HOST/api/v1/auth/openid.

После сохранения настроек применить изменения командой ./start.sh

register imageНастройка переменных среды для для авторизации через OIDC

register imageЕсли все настроено правильно при входе должна появиться иконка OpenID.

register imageКнопка OpenID.

Настройка SSO Kerberos

Для включения SSO авторизации Kerberos нужно выполнить следующие условия:

  • KERBEROS_ENABLED=true (включение доступной стратегии авторизации kerberos)
  • KERBEROS_CONF_PATH=/etc/krb5.conf (абсолютный или относительный путь к файлу конфигурации krb5.conf)
  • KERBEROS_KEYTAB_PATH=/etc/krb5_multi.keytab (абсолютный или относительный путь к keytab файлу (ссылка генерация keytab файла)).
  • COMPOSE_PROFILES=all,kerberos (добавить профиль kerberos для запуска необходимого сервиса для авторизации).
  • Убедится, что в DNS существует A и RTP запись для сервера, где будет расположен PLAN-R
  • Настроить браузеры для SSO

При соблюдении всех условий при авторизации должна появится кнопка “kerberos”, при нажатии на которую происходит аутентификация по сеансу операционной системы.

register imageКнопка аунтификации по сеансу операционной системы

Генерация keytab файла

SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса, даже не зная имени пользователя.

До того, как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.

Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.

Keytab-файл — это файл, содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.

Windows DC

  1. Создание пользователя для привязки SPN (Необходимо запретить смену пароля и не ограничивать его срок действия, иначе придётся перегенерировать keytab-файл)

register imageСоздание пользователя на windows DC

  1. В командной строке доменного контролера выполнить привязку SPN к учётной записи
  • setspn -A HTTP/plan-r.ru planr-sso

register imageПривязка SPN к созаной учетной записи

  1. Создание и привязка keytab файла происходит с помощью следующей команды где:
  • ktpass -princ HTTP/plan-r.ru@IV.DP.RU -mapuser planr-sso -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\planr.keytab

где:

  • -princ — имя принципала, содержащее SPN и Kerberos-область (realm);
  • -mapuser — пользователь, к которому привязывается SPN;
  • -pass — пароль пользователя;
  • -ptype — указывает тип принципала (рекомендуется KRB5_NT_PRINCIPAL);
  • -out — путь и имя генерируемого файла.

register imageСоздание Keytab файла

  1. Заходим в оснастку ADUC и убеждаемся, что для созданной учетной записи “User logon name” сменилось на имя привязанной SPN. Включена поддержка 128 и 256 битного шифрования для Kerberos.

register imageПроверка учетной записи

Samba DC

  1. Создание пользователя для привязки SPN к пользователю.
  • samba-tool user create --random-password planr-sso
  • samba-tool user setexpiry planr-sso –noexpiry
  • samba-tool spn add HTTP/plan-r.ru planr-sso

register imageСоздание и привязка SPN к пользователю

  1. Генерируем keytab файл с помощью следующей команды.

register imageГенерация keytab фалйла для samba DC

  1. Перенести файл на сервер и указать путь к нему с помощью переменной KERBEROS_KEYTAB_PATH

Установка PLAN-R в Kubernetes (preview)

Установка в кластер осуществляется путем установки helm chart в кластер при помощи утилиты helm (https://helm.sh/docs/intro/install/).

Ограничения:

  • Не настроена централизованная система сбора логов.
  • Не реализована поддержка SSO Kerberos.

В состав helm chart входя следующие зависимости, данные сервисы можно инсталлировать отдельно, указав строку подключения к ним в файле values.yml

  • Postgresql
  • Rabbitmq
  • Redis

Получение образов системы

Перед установкой необходимо перенести образы из полученного архива в приватный Container registry, с которого в последующим будет осуществляется загрузка образов в Kubernetes кластер.

  1. По полученной ссылке (см. п. 8.1 Получение архива дистрибутива системы) скачиваем архив и распаковываем его на любой сервере, имеющем доступ к Container registry и установленным docker для загрузки образов.
  2. Выполняем авторизацию в приватном Container Registry выполнив docker login <your.private.registry>.

register imageВыполнение авторизации в приватном репозитории

  1. В разархивированном дистрибутиве переходим в директорию images и выполняем скрипт push-to-registry.sh с аргументом -r <your.private.registry>. (также можно указать <your.private.registry>/dppm/ в качестве префикса, тогда все загруженные образы будут доступны по пути <your.private.registry>/dppm/). Данный скрипт выполняет загрузку всех образов из директории images. Eсли какие-либо образа не должны быть загружены в приватный репозиторий, из директории ./images их необходимо удалить.

register imageЗагрузка образов в приватный репозиторий

  1. При установки helm chart обязательно указать global.imageRegistry: <your.image.registry> либо image.registry: <your.image.registry>

Установка PLAN-R helm chart

  1. Переходим в полученный разархивированный дистрибутив. Перед установкой убеждаемся, что установлен helm и есть подключение к нужному кластеру.

register imageПроверка доступности Kubernetes кластера

  1. Записываем значения параметров по умолчанию planr-values.yaml для последующей их кастомизации.
  • helm show values planr-0.1.0.tgz > planr-values.yaml
  1. Редактируем необходимые значения в planr-values.yaml. Описание параметров helm chart (см. в п. 8.5.3 Параметры PLAN-R helm chart).
  2. Выполняем установку (рекомендуется заранее создать отдельное пространство имён, либо создать его во время установки добавив аргумент --create-namespace planr):
  • helm install planr plan-r-0.1.0.tgz -f planr-values.yaml --namespace planr

register image

Параметры PLAN-R helm chart

  • Helm chart содержит в себе 3 sub-charts (PostgreSql, RabbitMq, Redis). Полное описание параметров можно найти по следующим ссылкам:

https://artifacthub.io/packages/helm/bitnami/postgresql/11.9.13

https://artifacthub.io/packages/helm/bitnami/redis/16.13.2

https://artifacthub.io/packages/helm/bitnami/rabbitmq/11.16.2

Если планируется использовать уже развернутые решения, деплой sub-charts можно отключить следующими параметрами. В данном случаи в секции planrConfig.secrets, необходимо указать строки для подключения к уже развернутым сервисам.

  • postgresql.enable: false
  • rabbitmq.enable: false
  • redis.enable: false

В следующей таблице представлены все параметры, используемые при установке helm chart.

Таблица 6. Параметры, используемые при установке helm chart

Переменная Описание Значение по умолчанию
1 2 3
Глобальные параметры
global.imageRegistry Глобальный реестр образов Docker ""
global.pullSecrets Массив имен существующих серектов для загрузки образов []
global.storageClass Класс для создания Persistent Volume(s) ""
Конфигурация приложения
planrConfig. annotations Дополнительные аннотации к созданной Configmap []
planrConfig.secrets.create Создание секрета с строками подключения к внешним ресурсам true
planrConfig.secrets.existSecret Имя существующего секрета с строками подключения к внешним ресурсам ""
planrConfig.secrets.DB_URL Строка подключения к бд PostgreSql postgresql://planr:planr@planr-postgresql-hl:5432/planr
planrConfig.secrets.MB_URL Строка подключения к брокеру сообщений RabbitMQ amqp://planr:planr@planr-rabbitmq-headless:5672/planr
planrConfig.secrets.REDIS_URL Строка подключения к кешу данных Redis redis://:redisplanr@planr-redis-headless:6379
planrConfig.env.LOCAL_AUTH_ENABLED Включение локальной аутенфикации true
planrConfig.env.LDAP_AUTH_ENABLED Включение аутентификации через Active Directory false
planrConfig.env.API_KEY_AUTH_ENABLED Включение аутентификации при помощи api ключей true
planrConfig.env.SYSTEM_SITE Hostname, на который настроен ingress localhost
planrConfig.env.FILE_TOKEN_SECRET Рандомная строка, используемая для подписи файлов, выгружаемых для пользователя. qxowf545VL7hivuDL2XF5TdQz8pAp95o
planrConfig.env.FILE_TOKEN_EXPIRESIN Время жизни токена 24h
planrConfig.env.JWT_SECRET Строка для подписи JWT токена аутентификации. HggHdtd467Gg67
Конфигурация Services
Services.main.type Тип созданного Service для доступа к основному приложению ClusterIP
Services.main.port Порт сервиса основного приложения 80
Services.admin.type Тип созданного Service для доступа к консоли администрирования ClusterIP
Services.admin.port Порт сервиса для доступа к консоли администрирования 81
Services.api.type Тип созданного Service для доступа api ClusterIP
Services.api.port Порт сервиса для доступа к api 82
Services.docs.type Тип созданного Service для к документации ClusterIP
Services.docs.port Порт сервиса для доступа документации 83
Конфигурация ingress
ingress. enabled.true Создание Ingress true
ingress. hostname Dns имя. ""
ingress. className Класс используемого ingress controller nginx
ingress. paths.main.path Путь к основному приложению /
ingress.paths.main.pathType Тип пути для доступа к основному приложению Prefix
ingress. paths.admin.path Путь к консоли администрирования /admin
ingress.paths.admin.pathType Тип пути для доступа к консоли администрирования Prefix
ingress. paths.api.path Путь к публичному api /public-api
ingress.paths.api.pathType Тип пути для доступа к публичному api Prefix
ingress. paths.docs.path Путь к документации /docs
ingress.paths.docs.pathType Тип пути для доступа к документации Prefix
Ingress.annotations Дополнительный аннотации для ingress controller []
Ingress.tls Включение защищённого соединения для Ingress []
Конфигурация загрузки образов
image.registry Глобальный реестр Docker образов ""
image.imageTag Тег образов latest
image.pullPolicy Политика скачивания образов always
image.existPullSecrets Существующий секрет для загрузки образов []
image.create Создание секрета для скачивания образов false
image.imageCredentials.registry реестр docker образов ""
image.imageCredentials.username Имя пользователя для доступа к реестру образов ""
image.imageCredentials.password Пароль для доступа к реестру docker образов ""
image.imageCredentials.email Email для доступа к реестру docker образов ""
Масштабирование приложения
deployments.main.image Имя образа для main deployment main
deployments.main.replicaCount Количество реплик main 1
deployments.admin.image Имя образа для admin admin
deployments.admin.replicaCount Количество реплик admin 1
deployments.api.image Имя образа для api api
deployments.api.replicaCount Количество реплик api 1
deployments.docs.image Имя образа для docs docs
deployments.docs.replicaCount Количество реплик docs 1
deployments.workers.backup.image Имя образа для backup-worker worker_backup
deployments.workers.backup. replicaCount Количество реплик backup-worker 1
deployments.workers.storage.image Имя образа для storage-worker worker_storage
deployments.workers.storage. replicaCount Количество реплик storage -worker 1
deployments.workers.impex .image Имя образа для impex-worker worker_impex
deployments.workers.impex. replicaCount Количество реплик impex-worker 6
deployments.workers.planr.image Имя образа для planr-worker worker_planr
deployments.workers.planr. replicaCount Количество реплик planr-worker 6
deployments.workers.schedule.image Имя образа для schedule-worker worker_schedule
deployments.workers.schedule. replicaCount Количество реплик schedule-worker 1
deployments.workers.aas.image Имя образа для aas-worker worker_aas
deployments.workers.aas. replicaCount Количество реплик aas-worker 1
deployments.workers.notice.image Имя образа для notice-worker worker_notice
deployments.workers.notice. replicaCount Количество реплик notice-worker 1
deployments.workers.mailer.image Имя образа для mailer-worker worker_mailer
deployments.workers.mailer. replicaCount Количество реплик mailer-worker 1
deployments.workers.logger.image Имя образа для logger-worker worker_logger
deployments.workers.logger. replicaCount Количество реплик logger-worker 1
deployments.workers.costr.image Имя образа для costr-worker worker_costr
deployments.workers.costr. replicaCount Количество реплик costr-worker 1
Настройка хранилища Persistance volume
planrPersistence.create Создать хранилище при установке (Можно не создавать если будет использоваться s3 minio) false
planrPersistence.storageClass Класс Persistent Volumes (если не указан используется класс по умолчанию) ""
planrPersistence.accessMode Режим доступа к хранилищу ReadWriteMany
planrPersistence.size Размер хранилища 20Gi
planrPersistence.annotations Дополнительные анотации, которые необходимо добавить при создании хранилища. []
planrPersistence.useExitsClaims Использование предварительно подготовленного хранилища. ""
Автомаштабирование
autoscaling.main.enabled Включение автомаштабирования для main deployment false
autoscaling.main.minReplicas Минимальное количество реплик при автомаштабировании main deployment 1
autoscaling.main.maxReplicas Максимальное количество реплик при автомаштабировании main deployment 4
autoscaling.main. targetCPUUtilizationPercentage Порог утилизации СPU для автомаштабирования main deployment 80
autoscaling.main. targetMemoryUtilizationPercentage Порог утилизации RAM для автомаштабирования main deployment 80
autoscaling.admin.enabled Включение автомаштабирования для admin deployment false
autoscaling.admin.minReplicas Минимальное количество реплик при автомаштабировании admin deployment 1
autoscaling.admin.maxReplicas Максимальное количество реплик при автомаштабировании admin deployment 4
autoscaling.admin. targetCPUUtilizationPercentage Порог утилизации СPU для автомаштабирования admin deployment 80
autoscaling.admin. targetMemoryUtilizationPercentage Порог утилизации RAM для автомаштабирования admin deployment 80
autoscaling.workers.enabled Включение автомаштабирования для workers deployment false
autoscaling.workers.minReplicas Минимальное количество реплик при автомаштабировании workers deployment 1
autoscaling.workers.maxReplicas Максимальное количество реплик при автомаштабировании workers deployment 4
autoscaling.workers. targetCPUUtilizationPercentage Порог утилизации СPU для автомаштабирования workers deployment 80
autoscaling.workers. targetMemoryUtilizationPercentage Порог утилизации RAM для автомаштабирования workers deployment 80
Настройка потребления ресурсов
resources.main Дополнительные значения по ограничению ресурсов для main deployment {}
resources.admin Дополнительные значения по ограничению ресурсов для admin deployment {}
resources.workers Дополнительные значения по ограничению ресурсов для workers deployment {}
Настройка распределения по Нодам
nodeSelector.main настройка распределения main deployment по нодам кластера {}
nodeSelector.admin настройка распределения admin deployment по нодам кластера {}
nodeSelector.workers настройка распределения workers deployment по нодам кластера {}
tolerations.main Дополнительная настройка tolerations для main deployment []
tolerations.admin Дополнительная настройка tolerations для admin deployment []
tolerations.workers Дополнительная настройка tolerations для workers deployment []
affinity.main Настройка affinity правил для main deployment {}
affinity.admin Настройка affinity правил для admin deployment {}
affinity.workers Настройка affinity правил для workers deployment {}
Сервисный аккаунт
serviceAccount.create Создание сервисного аккаунта false
serviceAccount.annotations Дополнительные анотации при создании сервисного аккаунта {}
serviceAccount.name Имя сервисного аккаунта ""
Настойка подов
podAnnotations.main Дополнительные аннотации при создании main deployment {}
podAnnotations.worker Дополнительные аннотации при создании workers deployment {}