Skip to content

Установка Horizon в Kubernetes

Этот Helm чарт предназначен для развертывания backend-приложения Horizon в кластере Kubernetes. Он предоставляет конфигурируемые параметры для настройки образа, базы данных, аутентификации, мониторинга и других аспектов.

Установка

Для установки приложения из helm чарта используйте следующие команды:

helm repo add horizon-repo your.registry.ru/horizon
helm install horizon-prod horizon-repo/horizon --values values.yaml

Вы можете переопределить значения по умолчанию, указав их через флаги --set или values.yaml.

Обновление и удаление

Обновить приложение:

helm repo update horizon-repo
helm upgrade horizon-prod horizon-repo/horizon --values values.yaml

Удалить приложение:

helm uninstall horizon-prod

Не забудьте проверить удаление PVC для PostgreSQL, они не удаляются автоматически.

Требования к окружению

Для запуска приложения Horizon требуются следующие компоненты:

  • Helm 3.8.0+
  • Kubernetes 1.23+
  • PV provisioner, который уже запущен в вашей инфраструктуре для запуска pvc

Зависимости

Для запуска приложения Horizon требуются следующие сервисы:

  • PostgreSQL 16+: Обязательна для работы приложения. Если встроенная БД отключена, убедитесь, что внешняя PostgreSQL доступна и параметры в horizon.db настроены правильно.
  • LDAP: Опционально для аутентификации; настройте параметры в horizon.auth.ldap при необходимости.

Конфигурация

См. Настройка чарта перед установкой (на английском). Чтобы просмотреть все настраиваемые опции с подробными комментариями:

helm show values horizon

Использование Horizon в приватной сети с помощью зеркал

Вы можете использовать URL прокси/зеркала для загрузки Docker-образа с помощью переопределения global.imageRegistry:

global:
  imageRegistry: "mirror.example.com"

Ключевые параметры конфигурации

Чарт использует значения по умолчанию из values.yaml. Ниже описаны основные параметры, которые можно настроить.

Глобальные параметры

  • global.imageRegistry: Регистри Docker-образов (по умолчанию: пусто).
  • global.imagePullSecrets: Секреты для pull образов.

Переопределение имен

  • nameOverride и fullnameOverride: Переопределение имен ресурсов.

Параметры Horizon

  • horizon.image.repository: Репозиторий Docker-образа (по умолчанию: mtsrus/horizon-backend).

  • horizon.image.tag: Тег образа (по умолчанию: develop).

  • horizon.image.pullPolicy: Политика pull (по умолчанию: IfNotPresent).

  • horizon.replicaCount: Количество реплик подов (по умолчанию: 1).

  • horizon.db: Параметры подключения к PostgreSQL.

  • user: Имя пользователя (по умолчанию: horizon).

  • password: Пароль (по умолчанию: changeme — рекомендуется изменить).
  • host: Хост базы данных (по умолчанию: postgres-horizon для встроенной БД).
  • port: Порт (по умолчанию: 5432).
  • name: Имя базы данных (по умолчанию: horizon).

  • horizon.auth.secretKey: Секретный ключ для аутентификации (по умолчанию: 234UsedForTestOnly — измените для продакшена).

  • horizon.auth.ldap: Параметры LDAP-аутентификации.

  • url: URL LDAP-сервера (по умолчанию: ldap://ldap:389).

  • baseDn: Базовый DN (по умолчанию: ou=people,dc=ldapmock,dc=local).
  • user: Пользователь LDAP (по умолчанию: uid=adminuser1,ou=people,dc=ldapmock dc=local).
  • password: Пароль LDAP (по умолчанию: changeIT).

  • horizon.monitoring: Параметры мониторинга.

  • labels.env: Метка окружения (по умолчанию: prod).

  • serviceMonitor.enabled: Включить ServiceMonitor (по умолчанию: false).

  • horizon.args: Аргументы запуска приложения (например, --forwarded-allow-ips '*', --root-path /api).

  • horizon.adminUsers: Список администраторов (по умолчанию: ["admin_user1", "admin_user2"]).

  • horizon.env: Переменные окружения для приложения (например, HORIZON__DATABASE__POOL_PRE_PING: true, настройки OpenAPI и LDAP).

  • horizon.service: Параметры сервиса.

  • type: Тип сервиса (по умолчанию: ClusterIP).

  • port: Порт (по умолчанию: 8000).

  • horizon.ingress: Параметры Ingress.

  • enabled: Включить Ingress (по умолчанию: true).

  • path: Путь (по умолчанию: /api(/|$)(.*)).
  • host: Хост (по умолчанию: horizon.example.com).
  • annotations: Аннотации для Ingress (включая rewrite-target и заголовки).

  • horizon.volumes и horizon.volumeMounts: Дополнительные volumes и mounts (по умолчанию: пусто).

  • horizon.resources: Ресурсы подов (limits и requests; по умолчанию: не заданы, примеры закомментированы).

  • horizon.nodeSelector, horizon.tolerations, horizon.affinity: Настройки размещения подов.

Параметры PostgreSQL

Если postgresql.enabled: true, развертывается встроенная PostgreSQL.

  • postgresql.fullnameOverride: Имя (по умолчанию: postgres-horizon).
  • postgresql.auth: Параметры аутентификации.
  • username: Имя пользователя (по умолчанию: horizon).
  • password: Пароль (по умолчанию: changeme).
  • database: Имя базы данных (по умолчанию: horizon).

Monitoring

Для включения сбора метрик, включите .Values.horizon.monitoring.serviceMonitor.enabled в значение true. Также можно добавить labels для serviceMonitor с помощью yaml .Values.horizon.monitoring.serviceMonitor.labels

Метрики отображаются на внешнем URL с location /api/monitoring/metrics или /monitoring/metrics локально внутри пода.

Проверка работоспособности

Все поды компонентов запущены и принимают трафик. Вы можете проверить работу API по урлу указанном в Ingress, для проверки запроса используйте location /api/redoc, например horizon.example.com/api/redoc. Также работающее приложение отдает метрики по урлу упомянутом выше.

Дополнительные замечания

  • Измените все пароли и секретные ключи перед использованием в продакшене.
  • Чарт поддерживает кастомные аннотации, лейблы и security context для подов.
  • Можно прочитать дополнительную информацию в нашей внешней документации