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

Установка Логин Центра с помощью helm

Общая информация

Warning

Установка с помощью helm поддерживается с версии s-1.200.27.28 и d-1.300.0.104 для версий 1.200 и 1.300 соответственно.

Info

  • - путь до директории с установщиком LC
  • - путь до директории с манифестом

LC на платформе helm разворачивается на предварительно установленном k3s. При запуске инсталлятора он получает передаваемые параметры из манифеста передает их в values.yaml и пытается установить chart в текущий контекст по пути /etc/rancher/k3s/k3s.yaml

Предварительная подготовка

Подключаемся к серверу через ssh протокол.

Переходим в аккаунт root с помощью команды

sudo su

Затем скачиваем дистрибутив Логин Центра через терминал, если предоставлена прямая ссылка на nextcloud optimacros то с помощью команды

mkdir -p <path_to_lc_installer>
cd <path_to_lc_installer>
wget <direct_link>/download -O ИМЯ_ФАЙЛА.С_РАСШИРЕНИЕМ`

Сертификаты

Файлы должны называться bundle.crt и crt.key соответственно.

Подготовленные сертификаты

Если у вас уже есть заранее подготовленные сертификаты, переименуйте их и переместите в нужную директорию, например:

mv /home/username/company-certificate.crt <path_to_lc>/data/nginx/cert/bundle.crt
mv /home/username/company-certificate-key.key <path_to_lc>/data/nginx/cert/crt.key

Генерация самоподписанных сертификатов

Либо можно сгенерировать самоподписанные сертификаты:

cd <path_to_lc>/data/nginx/cert/
openssl req -newkey rsa:2048 -nodes -keyout crt.key -x509 -days 1095 -out bundle.crt

Ответьте на вопросы, которые задаст программа генерации

Установка вспомогательного ПО helm и k3s

Установка проводилась на ubuntu 24.04

helm

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

k3s.

curl -sfL https://get.k3s.io | sh -

Подготовка манифеста и .env файла

Warning

С версии f-1.200.40.108 для хранения чувствительных данных используется .env файл

Пример файла :

NATS_USERNAME=user
NATS_PASSWORD=
NATS_SYSTEM_USERNAME=admin
NATS_SYSTEM_PASSWORD=
NATS_URL="nats://login-center-nats-srv.<ns-name>.svc.cluster.local:34222"
INIT_ADMIN_PASSWORD=
INIT_ADMIN_EMAIL=
MONGO_INITDB_ROOT_PASSWORD=
MONGO_INITDB_ROOT_USERNAME=
MONGO_URL="mongodb://user:pass@login-center-db-srv.<ns-name>.svc.cluster.local:32766"
REDIS_URL="redis://:@login-center-redis-srv.<ns-name>.svc.cluster.local:6379"
REDIS_HOST=redis
REDIS_PORT=6379

Для поля пароля базы данных (mongo.dbPassword), с помощью любого генератора паролей, сгенерируйте надёжный пароль длиной не более 20 символов.

Warning

Важно: пароль не должен содержать символов @:;/% - это приведет к багу установки.

Также необходимо сгенерировать пароли для полей секции nats - password и systemPassword. Их длина должна быть не менее  22 символов.

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

Пример работы инсталятора без .env

[Progress 17%] .env не найден, создаём из шаблона
Файл .env создан: /om/login-center/.env
[Progress 18%] Синхронизация .env с шаблоном
[Progress 18%] Запуск env-importer
env-importer: старт
env-importer: generate URLs
env-importer: завершён
[Progress 19%] Проверка заполненности .env
Переменная не заполнена: NATS_PASSWORD
Переменная не заполнена: NATS_SYSTEM_PASSWORD
Переменная не заполнена: INIT_ADMIN_PASSWORD
Переменная не заполнена: INIT_ADMIN_EMAIL
Переменная не заполнена: MONGO_INITDB_ROOT_PASSWORD
Переменная не заполнена: MONGO_INITDB_ROOT_USERNAME
Заполните все переменные в /om/login-center/.env

Так же поддерживается хранение чувствительных данных через secret generic либо поставка секрета например через vault c нужными значениями.

kubectl create secret generic <имя секрета> -n lc
  --from-literal=NATS_USERNAME=user
  --from-literal=NATS_SYSTEM_USERNAME=admin
  --from-literal=NATS_PASSWORD=
  --from-literal=NATS_SYSTEM_PASSWORD=
  --from-literal=MONGO_URL="mongodb://user:pass@login-center-db-srv.<ns-name>.svc.cluster.local:32766"
  --from-literal=MONGO_DB=logincenter
  --from-literal=MONGO_INITDB_ROOT_PASSWORD=user
  --from-literal=MONGO_INITDB_ROOT_USERNAME=pass
  --from-literal=INIT_ADMIN_PASSWORD=
  --from-literal=NATS_URL="nats://login-center-nats-srv.<ns-name>.svc.cluster.local:34222"
  --from-literal=REDIS_URL="redis://:@login-center-redis-srv.<ns-name>.svc.cluster.local:6379"

в манифесте передать имя секрета который указан выше

vault:
  secretName: "<имя секрета>"
vim <path_to_lc>/manifest.yml

Согласно документации Описание полей manifest.yml файла

Пример манифеста

main:
  app: "login-center"
  publicHostname: "lc.mycompany.com"
initialization:
  firstWorkspaceName: "Test"
  firstWorkspaceHostname: "ws.mycompany.com"
  allowUIAddUsers: true
mongo:
  version: "0.0.2"
nginx:
  version: "1.7-1.31.1-alpine3.23"
  workspaceProxyUrl: ""
exportService:
  allowExport: "true"
audit:
  maskUserTokenInAudit: "true"
  concurrentSessionsLimit: "0"
node:
  extraCaCerts: ""
vault:
  secretName: ""
routeType: # ingress | gateway
ingress:
  ingressClassName: ""
gateway:
  name: ""
  namespace: ""
namespace: <ns-name>
nodeName: <k3s_instance_hostname>

Для поля пароля базы данных (mongo.dbPassword), с помощью любого генератора паролей, сгенерируйте надёжный пароль длиной не более 20 символов.

Warning

Важно: пароль не должен содержать символов @:;/% - это приведет к багу установки.

Также необходимо сгенерировать пароли для полей секции nats - password и systemPassword. Их длина должна быть не менее  22 символов.

Поле publicHostname в секции main должно быть заполнено значением доменного имени сервера, где будет работать LC вместо "defaulthost.com".

Установка

Создайте namespace

Warning

Обязательное условие иначе установка закончится с ошибкой

kubectl create namespace <ns-name>

Теперь когда есть подготовленные манифест, сертификаты и дистрибутив, перейдите к установке LC. Для этого перейдите в директорию со скачанным ранее дистрибутивом, например, с помощью команды:

cd <path_to_lc_installer>

Выдайте файлу права на исполнение с помощью команды

chmod +x login-center-версия.sh

Запустите инсталлятор с помощью команды

./login-center-версия.sh -- -p helm -n <ns-name> -v <k3s_instance_hostname>

При работе инсталятор вывод будет следующий:

...
Uncompressing Optimacros Login Center  100%
Выбранная платформа: helm
Выбрано пространство имен: <ns-name>
Выбрано имя ноды кластера: <k3s_instance_hostname>
[Progress 0%] Запуск...
[Progress 1%] Поиск установленного приложения...
Платформа для установки: helm
Найдено установленное приложение по пути /om/login-center
[Progress 2%] Приложение: Optimacros Login Center
[Progress 3%] Проверка платформы...
[Progress 5%] Проверка сертификатов...
[Progress 6%] Сертификаты найдены
Исполнение скрипта платформы уровня 1
Определяем пространство имен приложения...
Обновляем значение поля namespace на lc в файле манифеста.
Определяем ноду для работы приложения...
Обновляем значение поля nodeName на <k3s_instance_hostname> в файле манифеста.
[Progress 7%] Найден манифест приложения в папке установки.
[Progress 8%] Обновление манифеста приложения.
[Progress 15%] Получение значений манифеста
[Progress 16%] Проверка .env файла
[Progress 17%] .env найден
[Progress 18%] Синхронизация .env с шаблоном
[Progress 18%] Запуск env-importer
env-importer: старт
env-importer: generate URLs
env-importer: завершён
[Progress 19%] Проверка .env пропущена (helm mode)
[Progress 20%] Выбрана платформая установки: helm
[Progress 40%] Копируем утилиты...
[Progress 45%] Генерируем и копируем шаблоны...
Исполнение скрипта платформы уровня 2
Определяем тип маршрутизации приложения...
Обнаружен Ingress Controller
Тип маршрутизации: ingress
Определяем Ingress-контроллер приложения...
Найден ingressClass: traefik
Используем ingressClass: traefik
Обновляем values.yaml helmchart...
...

После установки проверьте запущенные поды командой

kubectl get pods -A

Пример вывода команды (список подов и кол-во может отличаться в зависимости от версии):

lc1           login-center-access-586758889d-rlpzs            1/1     Running     0               4d23h
lc1           login-center-audit-756dbb5c7d-cmtfn             1/1     Running     0               4d23h
lc1           login-center-authentication-598988cbf8-k4dnf    1/1     Running     0               4d23h
lc1           login-center-core-68845f679c-7c5zv              1/1     Running     0               4d23h
lc1           login-center-db-78488d7bb-4vv7p                 1/1     Running     0               4d23h
lc1           login-center-export-service-5978cd9545-zdjfk    1/1     Running     0               4d23h
lc1           login-center-frontend-c8b6bc87-bbxvs            1/1     Running     1 (4d23h ago)   4d23h
lc1           login-center-frontend-gateway-8496cfc89-z5xs6   1/1     Running     0               4d23h
lc1           login-center-nats-f8947fd9c-47lrr               1/1     Running     0               4d23h
lc1           login-center-nginx-649fd5c77-jgd5r              1/1     Running     0               4d23h
lc1           login-center-openid-cc887677-tldcm              1/1     Running     1 (4d23h ago)   4d23h
lc1           login-center-postgres-5f44cd58d6-42b7j          1/1     Running     0               4d23h
lc1           login-center-public-gateway-7858bc548b-flj7p    1/1     Running     1 (4d23h ago)   4d23h
lc1           login-center-redis-74c5cdd788-twhgz             1/1     Running     0               4d23h
lc1           login-center-resource-7bbb5448c4-mnlcv          1/1     Running     0               4d23h
lc1           login-center-rolemapper-6c74458c98-qp5t7        1/1     Running     0               4d23h
lc1           login-center-service-gateway-ff76bbb44-xj4nj    1/1     Running     0               4d23h
lc1           login-center-service-monitor-5b64986b94-mdb8f   1/1     Running     0               4d23h
lc1           login-center-syslog-858f9469b7-zd7hq            1/1     Running     0               4d23h
lc1           login-center-workspaceapi-cb95f8ccd-6bv6b       1/1     Running     0               4d23h

Можно проверить результат установки в браузере введя имя логин центра

lc_index.png