Развертывание системы

Установка 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 {}