Установка Системы¶
В системе, с которой будет производиться развертывание в кластер Kubernetes (Linux, либо WSL), должен быть установлен kubectl той же версии, что и кластер и helm.
Для установки необходимо выполнить следующие действия:
1. Создать namespace с любым удобным наименованием в пространстве Kubernetes.
2. Для возможности скачивания образов из защищенного репозитория необходимо предварительно убедиться, что есть:
- Адрес registry: nexus.ldm.ru:8081;
- Логин и пароль (например, ci-user / my-secret-pass);
- Доступ к кластеру Kubernetes через kubectl;
- Права на создание secret в нужном namespace.
3. Создать секрет:
kubectl create secret docker-registry nexus-secret \
--docker-server=nexus.ldm.ru:8081 \
--docker-username='имя пользователя от nexus' \
--docker-password='пароль от nexus' \
--namespace='где развернута Система'
4. Получить наименование секрета, в данном случае «nexus-secret», используя команду:
kubectl get secret | grep nexus
Полученное наименование секрета необходимо прописать в «values.yaml» в строку «pullSecrets» на шаге 13, предварительно удалив квадратные скобки.
5. Проверить список репозиториев:
helm repo list
6. Добавить репозиторий, выполнив команду:
helm repo add ldm https://nexus.ldm.ru:8081/repository/ldm-charts --username=<user> --password=<password>
Необходимо использовать переданные с дистрибутивом «username» и «password».
7. Обновить репозиторий:
helm repo update
8. Показать список доступных версий командой:
helm search repo ldm --versions
9. Найти нужную версию:
helm search repo ldm --versions | grep 1.11.1
10. Создать директорию для удобства сохранения и распаковки.
mkdir charts
cd charts/
11. Скачать в созданную директорию образы:
helm pull ldm/platform --version 1.11.1
12. Распаковать командой:
tar xvzf platform-1.11.1.tgz
13. После распаковки открыть файл «values.yaml» и заполнить его:
helm show values ldm/platform --version 1.11.1 >values.yaml
\# Префикс окружения. ВНИМАНИЕ! Не должен содержать символ тире '-'.
ENVIRONMENT_PREFIX: "demo"
\# Глобальная секция
default:
\# LOG_LEVEL: info # Раскомментируйте, чтобы изменить глобальный уровень логирования
ingress:
host: "{{ ingress_host }}" # Хост для ингресс kubernetes
ingressClassName: nginx # Класс ингресса
clusterIssuer: k8s-clusterissuer # Рекомендуется не менять
tls:
enabled: true # Признак, используем ли TLS/SSL
secretName: ldm-secret-tls # Имя секрета для TLS/SSL, необходимо предварительно создать секрет с файлами ca.crt, tls.crt, tls.key
image:
repository: "{{ docker_registry }}" # Репозиторий Docker-образа.
repositoryPath: docshouse # Путь к репозиторию Docker-образа.
pullPolicy: Always # Политика извлечения образов.
pullSecrets: [] # Список секретов, необходимых для извлечения образов.
storageClassName: nfs-client # Имя StorageClass, используемого для хранения данных.
schedulingRules:
nodeSelector: {} # Ключ-значение для выборочного планирования по узлам.
affinity: {} # Аффинити для выбора узлов.
tolerations: [] # Список Tolerations для обработки неподходящих узлов.
securityContext: {} # Конфигурация securityContext для контейнеров.
jks: {} # монтирование trustStore в java контейнеры. Нужно при использовнии самоподписанных сертификатов.
\# editJavaOpts: false # Исправлять автоматически содержимое переменной JAVA_OPTS
\# secretName: jks-secret # Имя секрета для хранения ключа файла jks. Необходимо предварительно создать java trustStore и создать из него secret
\# mountData: trusted.jks # имя файла trustStore.
\# mountPath: /u01/docshouse/config # Путь, где будут смонтирован trustStore.
\# password: changeit # Пароль для доступа к файлу jks.
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_SCHEME: public # Схема для подключения к базе данных.
POSTGRESQL_USER: "postgres" # Имя пользователя для подключения к базе данных.
POSTGRESQL_PASSWORD: "123456" # Пароль для пользователя PostgreSQL.
kafka:
KAFKA_URL_LIST: "192.168.1.45:9092" # Список адресов и портов для подключения к Kafka, через запятую.
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_SECRET: "ed59z6xnrosxlpOzh8AmkBbO7uecDnH9" # Секретный ключ клиента Keycloak.
KEYCLOAK_CLIENT_ID: "dh-backend" # Имя клиента 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.
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 # Пароль сервера печати
signatures:
secretName: '' # Имя секрета для хранения подписей.
mountPath: /crypto_certs # Путь, где будут храниться сертификаты.
mountData: ldm-ss-test.pfx # Имя файла, который нужно смонтировать в контейнере.
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.
ZEEBE_PORT: "26500" # Порт для интеграции с Zeebe.
\# # Переопределение параметров сервисов:
\# # Для уточнения списка переменных обратитесь к документации «Переменные окружения ЛДМ. Платформа контент-сервисов» или на сайте https://users.docs.ldm.ru
\# # Пример:
\# apps:
\# backend:
\# name-of-service:
\# tag: 1.1.1
\# replicas: 2
\# lang: java
\# env:
\# APP_NAME: custom-name-of-service
\# REDIS_DATABASE: "1"
\# logging_level_ru: "debug"
\# secret:
\# REDIS_PASSWORD: "custom_pass"
\# startupProbe: {}
\# readinessProbe: {}
\# livenessProbe: {}
\# resources: {}
\# depends_on:
\# name-of-service2:
\# condition: service_healthy
\# name-of-service3:
\# condition: service_healthy
\# name-of-service2:
\# tag: 1.1.43
\# replicas: 1
\# lang: dotnet
\# env:
\# APP_NAME: custom-name-of-service
\# REDIS_DATABASE: "1"
\# Logging__LogLevel__Default: "Debug"
\# secret:
\# REDIS_PASSWORD: "custom_pass"
\# startupProbe: {}
\# readinessProbe: {}
\# livenessProbe: {}
\# resources: {}
\# depends_on:
\# name-of-service2:
\# condition: service_healthy
\# name-of-service3:
\# condition: service_healthy
14. После заполнения файла «values.yaml», находясь в директории Системы, произвести установку:
helm install platform ldm/platform --version 1.11.1 -f values.yaml
15. Проверить наличие Системы в списке установленных релизов текущего кластера:
helm list
16. Вывести список сервисов в текущем пространстве Kubernetes для отслеживания состояния:
kubectl get pods

