Установка Системы

В системе, с которой будет производиться развертывание в кластер 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

img

Полученное наименование секрета необходимо прописать в «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

img