Действия перед установкой Системы

Проверка доступа к репозиториям

Перед установкой Системы необходимо выполнить следующие действия:

  1. Получить учетные данные (логин/пароль или токен) для доступа к репозиторию образов контейнеров (container registry), где размещены образы.
  2. Получить учетные данные для доступа к Helm‑репозиторию, в котором размещен чарт «client-dossier».
  3. Убедиться, что в конфигурации указаны корректные URL:

    • Helm‑репозиторий: https://nexus.ldm.ru:8081/repository/ldm-products;
    • Адрес container registry задается в файле «values.yaml» в параметре «default.repository» (например, «registry.your-company.local»).

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

Префикс {prefix} в именах баз данных должен соответствовать заданному значению в переменной values чарта, например, ENVIRONMENT_PREFIX: "demo".

До выполнения п. Установка системы необходимо на сервере PostgreSQL выполнить следующие действия:

  1. Создать базу данных «{prefix}_ldm_user_folders_db» для сервиса «ldm-user-folders-service».
  2. Создать базу данных «{prefix}_documents_export_db» для сервиса «ldm-documents-export-service».

Примеры команд без паролей/адресов:

sql
CREATE DATABASE {prefix}_ldm_user_folders_db;
CREATE DATABASE {prefix}_documents_export_db;

Проверка Helm-репозиториев

Список Helm-репозиториев должен содержать репозиторий «ldm-products».

Перед установкой Системы нужно выполнить проверку Helm-репозиториев:

  1. Убедиться в том, что репозиторий «ldm» подключен, выполнив команду:
helm repo list

В выводе должна присутствовать строка с именем «ldm» и URL https://nexus.ldm.ru:8081/repository/ldm-products.

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

helm repo add ldm-products https://nexus.ldm.ru:8081/repository/ldm-products --username {username} --password {password}

3. Обновить список чартов, используя команду:

helm repo update

Репозиторий «ldm-products» будет добавлен.

Поиск и скачивание версии чарта

Для поиска версии чарта 1.3.0 нужно выполнить команду:

helm search repo client-dossier --devel

В результатах должна отображаться строка с CHART VERSION 1.3.0 и APP VERSION 1.3.0:

ldm-products/client-dossier

Далее нужно скачать чарт 1.3.0, для этого нужно выполнить следующие действия:

  1. Выполнить команду:
helm pull ldm-products/client-dossier --version=1.3.0

2. Распаковать полученный архив:

tar -xzf client-dossier-1.3.0.tgz

3. Перейти в распакованную директорию:

cd client-dossier

Версия чарта 1.3.0 будет скачана.

Настройки в файле «values.yaml»

Файл «values.yaml» расположен в директории «client-dossier /values.yaml».

Необходимо открыть файл «values.yaml» и настроить параметры.

Важно актуализировать следующие разделы:

# Префикс окружения. ВНИМАНИЕ! В именах базы данных POSTGRESQL_NAME тире "-" в значении переменной меняется на подстрочное тире "_". demo-test : > demo_test
ENVIRONMENT_PREFIX: "demo"
# Глобальная секция
default:
  # LOG_LEVEL: info # Раскомментировать, чтобы изменить глобальный уровень логирования
  ingress:
    host: "ldm.test"       # Хост для Ingress Kubernetes
    ingressClassName: nginx          # Класс Ingress
    clusterIssuer: k8s-clusterissuer # Рекомендуется не менять без крайней необходимости
    tls:
      enabled: true               # Используется ли TLS/SSL
      secretName: ldm-secret-tls  # Имя секрета для TLS/SSL, необходимо предварительно создать секрет с файлами ca.crt, tls.crt, tls.key
  image:
    repository: "nexus.ldm.ru:8081" # Репозиторий Docker-образа
    repositoryPath: docshouse           # Путь к репозиторию Docker-образа
    pullPolicy: Always                  # Политика извлечения образов
    pullSecrets: []                     # Список секретов, необходимых для извлечения образов
  volume: {} # Выключено по умолчанию
    # size: 500Gi                   # Размер PV, если поддерживает storageClass
    # mount: "/u01/docshouse/nfs"   # Папка монтирования в контейнер
    # storageClassName: nfs-client  # Имя StorageClass, используемого для хранения данных
  schedulingRules:
    nodeSelector: {}    # Ключ-значение для выборочного планирования по узлам
    affinity: {}        # Аффинити для выбора узлов
    tolerations: []     # Список Tolerations для обработки неподходящих узлов
  securityContext: {}   # Конфигурация securityContext для контейнеров
  # Монтирование trustStore в Java контейнеры. Нужно при использовании самоподписанных сертификатов
  jks: {}
    # editJavaOpts: false              # Исправлять автоматически содержимое переменной JAVA_OPTS
    # secretName: jks-secret           # Имя секрета для хранения ключа файла jks. Необходимо предварительно создать Java trustStore и создать из него secret
    # mountData: trusted.jks           # Имя файла trustStore
    # mountPath: /u01/docshouse/config # Путь, где будут смонтирован trustStore
    # password: changeit               # Пароль для доступа к файлу jks
    # storeType: jks                   # Тип хранилища
  # Монтирование Keystore в Java контейнеры. Нужно, если используется проверка сертификата клиента
  keystore: {}
    # editJavaOpts: false              # Исправлять автоматически содержимое переменной JAVA_OPTS
    # secretName: keystore-secret      # Имя секрета для хранения ключа файла jks. Необходимо предварительно создать Java trustStore и создать из него secret
    # mountData: keystore.jks          # Имя файла trustStore.
    # mountPath: /u01/docshouse/config # Путь, где будет смонтирован trustStore
    # password: changeit               # Пароль для доступа к файлу jks
    # storeType: jks                   # Тип хранилища
    # key_password: changeit           # Пароль к ключу клиента
  cacertificates: {} # Монтирование CA для DOTNET микросервисов. Нужно при использовании самоподписанных сертификатов
    # secretName: server-cert
    # mountData: ca.crt
    # mountPath: /truststore
  serviceAccount: ""                   # Имя serviceAccount для предоставления доступа к сервисам
  service:
    health_path: "/actuator/health" # Путь для проверки работоспособности сервиса
    health_port: "8080"             # Порт для проверки работоспособности сервиса
    port: "8080"                    # Порт, на котором сервис принимает запросы
services:
  postgresql:
    create_dbs: "false"             # Создавать ли базы данных при развертывании
    POSTGRESQL_HOST: "192.168.1.45" # IP-адрес PostgreSQL сервера
    POSTGRESQL_PORT: "5432"         # Порт PostgreSQL сервера
    POSTGRESQL_SCHEMA: public       # Схема для подключения к базе данных
    POSTGRESQL_USER: "postgres"     # Имя пользователя для подключения к базе данных
    POSTGRESQL_PASSWORD: "123456"   # Пароль для пользователя PostgreSQL
  kafka:
    KAFKA_URL_LIST: "192.168.1.45:9092" # Список адресов и портов для подключения к Apache Kafka, через запятую
    KAFKA_AUTH: "NONE"                  # Тип авторизации в Apache Kafka - "NONE" - работает без авторизации, "PLAIN" - необходимо указать пользователя и пароль, "OAUTH2" - будут использоваться настройки Keycloak, для работы UMA/RPT токена OAUTH2_PASSWORD
    KAFKA_LOGIN: ""                     # Apache Kafka пользователь
    KAFKA_PASSWORD: ""                  # Apache Kafka пароль
    KAFKA_KEYCLOAK_URL: "http://192.168.1.45:8080"                    # URL-адрес Keycloak сервера
    KAFKA_KEYCLOAK_REALM: "DH"                                        # Имя Realm в Keycloak
    KAFKA_KEYCLOAK_CLIENT_ID: "dh-backend"                            # Имя клиента KEYCLOAK_CLIENT_ID Keycloak
    KAFKA_KEYCLOAK_CLIENT_SECRET: "ed59z6xnrosxlpOzh8AmkBbO7uecDnH9"  #Секретный ключ клиента Keycloak
    KAFKA_KEYCLOAK_UMA_ENABLED: "false"                               # Режим UMA/RPT токенов
    KAFKA_KEYCLOAK_AUDIENCE: "kafka"    # Название ресурса (для выдачи прав в Keycloak) при работе с UMA/RPT токенами
    KAFKA_KEYCLOAK_USERNAME: "kafka-login"                 # Логин авторизации для получения UMA/RPT токена
    KAFKA_KEYCLOAK_PASSWORD: "V3rY$tR0NgP@$$"                 # Пароль авторизации для получения UMA/RPT токена
    KAFKA_SSL_ENABLED: "false"                              # Если брокер используется SSL, выставить в true
    KAFKA_SSL_ENABLED_PROTOCOLS: TLSv1.2,TLS                 # Используемые протоколы TLS
  elasticsearch:
    ELASTICSEARCH_HOST: "192.168.1.45" # IP-адрес Elasticsearch сервера
    ELASTICSEARCH_PORT: "9200"         # Порт Elasticsearch сервера
  keycloak:
    KEYCLOAK_URL: "http://192.168.1.45:8080"                          # URL-адрес Keycloak сервера
    KEYCLOAK_REALM: "DH"                                              # Имя Realm в Keycloak
    KEYCLOAK_WEBCLIENT_ID: "dh-webclient"                             # ID веб-клиента Keycloak
    KEYCLOAK_WEBCLIENT_SECRET: "PUPgFrcCYd6bEkyoMCztKsbiFj5RsHS9"     # Секретный ключ веб-клиента Keycloak
    OAUTH2_KEYCLOAK_CLIENT_ID: "ldm-client"                           # ID клиента Keycloak для OAuth2
    OAUTH2_KEYCLOAK_CLIENT_SECRET: "lp4eSstxlQVETA4bgYLI2Qy3niibTNEq" # Секретный ключ клиента Keycloak
    KEYCLOAK_CLIENT_ID: "dh-backend"                                  # Имя клиента Keycloak
    KEYCLOAK_CLIENT_SECRET: "ed59z6xnrosxlpOzh8AmkBbO7uecDnH9"        # Секретный ключ клиента Keycloak
  syslog:
    DH_SYSLOG_FACILITY: "1"            # Номер Facility Syslog
    DH_SYSLOG_HOST: 192.168.1.45       # IP-адрес Syslog сервера
    DH_SYSLOG_MESSAGE_FORMAT: RFC_5424 # Формат сообщений Syslog
    DH_SYSLOG_PORT: "514"              # Порт Syslog сервера
    DH_SYSLOG_PROTOCOL: UDP            # Протокол Syslog
  redis:
    REDIS_HOST: "192.168.1.45"     # IP-адрес Redis сервера
    REDIS_PORT: "6379"             # Порт Redis сервера
    REDIS_CLUSTER_ENABLED: "false" # Включена ли кластеризация Redis
    REDIS_NODES: ""                # Список узлов кластера Redis с портами, через запятую
    REDIS_USER: "default"          # Имя пользователя для доступа к Redis
    REDIS_PASSWORD: ""             # Пароль для доступа к Redis
  license:
    LDM_LICENSE_HMAC_KEY: "{4B037037-0C19-447C-B7E7-1FC1A79E30E0}" # Ключ лицензии LDM
    secretName: "" # Имя секрета с файлом лицензии
  accessrights_key:
    DH_ACCESSRIGHTS_TOKEN_SECRET_KEY: YmnMJUCqgRisYj2WMi6BXi6hgmBqKNFj # Секретный ключ для токенов доступа
  r7_integration:
    R7_BASE_URL: http://172.19.91.25 # URL-адрес интеграции с R7
    R7_JWT_SECRET: fB0HehaxIbFv      # Секретный ключ для JWT
  mail:
    DH_EMAIL_SERVICE_EMAIL_HOST: "192.168.1.35"            # IP-адрес почтового сервера
    DH_EMAIL_SERVICE_EMAIL_PORT: "25"                      # Порт почтового сервера
    DH_EMAIL_SERVICE_EMAIL_BOX: "noreply@mail.example.com" # Email-адрес для отправки почты
    DH_EMAIL_SERVICE_EMAIL_PASSWORD: "password"            # Пароль для отправки почты
    DH_EMAIL_SERVICE_EMAIL_USER: "user"                    # Имя пользователя для отправки почты
  reports: {} # Секция для дополнительных коннектов у службы отчетов. Обычно не требуется
    # extraConnections:
    #   - database: bar_db
    #     host: db-bar
    #     port: "5433"
    #     provider: PostgreSQL
    #     user: bar_user
    #     password: bar_pass
  printing:
    CUPS_HOST: 192.168.1.45   # Хост сервера печати
    CUPS_PORT: 631            # Порт сервера печати
    CUPS_USERNAME: print      # Пользователь сервера печати
    CUPS_PASSWORD: print      # Пароль сервера печати
  #настройки LDM DSS
  signatures:
    secretName: ''                                     # Имя секрета для хранения клиентских сертификатов
    secretNameCA: ''                                    # Имя секрета для хранения СА доверенных сертификатов
    mountPath: /crypto_certs                            # Путь, где будут храниться сертификаты
    mountPathCA: /crypto_ca_certs                       # Путь, где будут храниться сертификаты
    #mountData: ldm-ss-test.pfx                        # Имя файла, который нужно смонтировать в контейнере. DEPRECATED
    LDM_DSS_PIN: 111                                    # PIN для сертификата
    LDM_DSS_HOST: "http://172.19.91.48"                                    # Хост сервера LDM DSS
    LDM_DSS_ARCHIVE_URL: "https://dsud-cp-ar.LAN.LANIT.RU:32764"            # URL-адрес архива LDM DSS.
    LDM_DSS_CLIENT_ID: ldm.signService.api                                  # ID клиента LDM DSS
    LDM_DSS_CLIENT_SECRET: nTM5pB1G07FpsKD3ChygGnFmuRNIf5Ro                 # Секретный ключ клиента LDM DSS
    LDM_DSS_ARCHIVE_CERTIFICATE_THUMBPRINT: "a1f4fc061bc27c318c26b1897a48ccdac91c8971" # Отпечаток сертификата LDM DSS
    LDM_ADMIN_ROLE: dh-admin                                             # Роль администратора LDM DSS
  zeebe:
    ZEEBE_HOST: "zeebe-zeebe-gateway" # Имя хоста для интеграции с Zeebe
    ZEEBE_PORT: "26500"               # Порт для интеграции с Zeebe
  jaeger:
    MANAGEMENT_TRACING_ENABLED: false # Включение отправки трейсов в Jaeger
    MANAGEMENT_TRACING_ENDPOINT: http://jaeger-collector.monitoring.svc.cluster.local:4318/v1/traces # URL Jaegger

Важно! Все значения из примеров являются демонстрационными и не должны использоваться в реальных средах. Нужно обязательно заменить их на актуальные для инфраструктуры организации.

Рекомендуется не хранить секреты в открытом виде в файле «values.yaml». Для production-сред нужно использовать Kubernetes Secrets, External Secrets Operator или подстановку значений через CI/CD-переменные с флагом --set.