Установка 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 для подов.
- Можно прочитать дополнительную информацию в нашей внешней документации