This commit is contained in:
Vlad Bubnov
2025-05-27 08:03:13 +03:00
parent f47d4feeac
commit fb638f1988
21 changed files with 1639 additions and 68 deletions
+371
View File
@@ -0,0 +1,371 @@
---
# Основные настройки приложения HRBox
app:
# Docker образ приложения HRBox
# Получите доступ к реестру у сотрудников HRBox
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox:latest"
# Настройки домена
# defaultTenantHostname - основной домен вашей HRBox инсталляции
# Например: hrbox.company.com
# Должен совпадать с ingress.host
defaultTenantHostname: "hrbox.example.com"
# Уникальное имя инстанса для идентификации
instanceName: "onprem"
# Домен для единой авторизации (SSO)
# Оставьте пустым, если не используете единую точку входа
authHost: ""
# Режим отладки
# "0" - production режим (рекомендуется)
# "1" - debug режим (только для разработки)
debug: "0"
# Количество реплик для каждого сервиса
# Рекомендации по масштабированию:
# - web: 2-10 реплик в зависимости от количества пользователей
# - worker: 2-5 реплик для обработки фоновых задач
# - websocket: 2-6 реплик для real-time функционала
# - geonames: 1-2 реплики (сервис не требователен к ресурсам)
replicas:
web: 2
worker: 2
websocket: 2
geonames: 1
# PostgreSQL база данных
# Требования: PostgreSQL 14+
# Рекомендуется настроить репликацию для отказоустойчивости
postgres:
host: "postgresql"
port: "5432"
database: "hrbox"
user: "hrbox"
# Пароль для подключения к БД
password: ""
# Использование Citus для шардирования
# "true" - если используете Citus расширение
# "false" - для обычного PostgreSQL
citus: "false"
# Redis для кеша и сессий
# Потеря данных не критична - хранятся только сессии и кеш
# При перезапуске Redis все пользователи будут разлогинены
redis:
host: "hrbox-dragonfly"
port: "6379"
# NATS JetStream - брокер сообщений
# Для отказоустойчивости используйте кластер из 3+ нод
# Формат для кластера: nats://node1:4222,nats://node2:4222,nats://node3:4222
nats:
url: "nats://hrbox-nats:4222"
# S3-совместимое хранилище для файлов
# Поддерживаются: AWS S3, MinIO, Yandex Object Storage, VK Cloud Storage
s3:
# URL endpoint вашего S3
# Примеры:
# - MinIO: http://minio:9000
# - Yandex: https://storage.yandexcloud.net
# - VK Cloud: https://hb.vkcloud-storage.ru
endpoint: "https://storage.example.com"
# Название bucket для хранения файлов
bucket: "hrbox"
# Access Key для доступа к S3
key: ""
# Secret Key для доступа к S3
secret: ""
# Регион S3 (обычно us-east-1 для MinIO)
region: "us-east-1"
# Версия API (оставьте "latest")
version: "latest"
# Использовать path-style URLs
# "true" для MinIO и self-hosted S3
# "false" для AWS S3
pathStyle: "true"
# Включить multipart загрузку для больших файлов
multipart: "true"
# Префикс для всех объектов (опционально)
prefix: ""
# SMTP настройки для отправки email
smtp:
# SMTP сервер
host: "smtp.example.com"
# Порт SMTP
# 25 - без шифрования
# 587 - STARTTLS
# 465 - SSL/TLS
port: "587"
# Логин для SMTP авторизации
user: "noreply@example.com"
# Пароль для SMTP
password: ""
# Email отправителя
from: "noreply@example.com"
# Домен отправителя для HELO/EHLO
fromHost: "example.com"
# Тип шифрования: "", "tls", "ssl"
securityType: "tls"
# Разрешить самоподписанные сертификаты
sslAllowSelfSigned: "true"
# Проверять SSL сертификат сервера
sslVerifyPeer: "false"
# Sentry для мониторинга ошибок (опционально)
sentry:
# DSN для отправки ошибок
# Оставьте пустым, чтобы отключить
dsn: ""
# Окружение для группировки ошибок
environment: "production"
# Настройки сервиса геолокации
geonames:
# URL внутреннего сервиса geonames
# Не меняйте, если используете стандартный деплой
url: "http://hrbox-geonames:8181"
# Настройки воркеров Launchpad
# Формат: "название-топика:количество-воркеров"
launchpad:
topics: "launcher:1,file-processor:1,image-processor:1,send-mail:1,send-im:1,send-bell:1,send-push:1,backup:1,cleaning:1"
# Интеграция с Yandex (опционально)
yandex:
# Client ID для Yandex OAuth
clientId: ""
# Client Secret для Yandex OAuth
clientPassword: ""
# Интеграция со Slack (опционально)
slack:
# Slack App Client ID
clientId: ""
# Slack App Client Secret
clientSecret: ""
# Slack Verification Token
verificationToken: ""
# HRBox Hub
hub:
# URL Hub сервиса
url: "https://hub.hrbox.io"
# Токен для авторизации в Hub, получите от сотрудника HrBox
token: ""
# AI интеграции (опционально)
ai:
# Yandex Cloud AI
yandex:
# ID каталога в Yandex Cloud
folderId: ""
# API ключ для Yandex Cloud
apiKey: ""
# OpenAI интеграция
openai:
# API ключ OpenAI
apiKey: ""
# Прокси ключ (если используете прокси)
proxyKey: ""
# Base URL для API (можно указать прокси)
baseUri: ""
# Секретные ключи приложения
secrets:
# Ключ валидации cookie (32 символа)
# Используется для защиты от XSS атак
# Генерация: openssl rand -hex 16
cookieValidationKey: ""
# Ключ шифрования данных (64 символа)
# ВАЖНО: Не теряйте этот ключ! Без него невозможно расшифровать данные
# Используется для шифрования паролей интеграций (S3, ADFS и др.)
# Генерация: openssl rand -base64 48
encryptionKey: ""
# Настройки Ingress
ingress:
# Включить Ingress
enabled: true
# Класс Ingress контроллера
# Обычно: "nginx" или "traefik"
className: "nginx"
# Хост для доступа к приложению
# Используйте wildcard для мультитенантности: *.hrbox.company.com
# Или конкретный домен: hrbox.company.com
host: "hrbox.example.com"
# Настройки TLS/HTTPS
tls:
# Включить HTTPS
# ВАЖНО: В production всегда используйте HTTPS
enabled: true
# Имя Kubernetes Secret с SSL сертификатом
# Создайте через: kubectl create secret tls hrbox-tls --cert=cert.pem --key=key.pem
# Или используйте cert-manager для автоматического получения сертификатов
secretName: "hrbox-tls"
# Настройки ресурсов для контейнеров
# Указаны рекомендуемые значения для production
resources:
# Web-сервер (PHP-FPM + Nginx)
# Обрабатывает HTTP запросы, API, веб-интерфейс
app:
requests:
cpu: "0.5" # Минимум 0.5 CPU
memory: "512Mi" # Минимум 512MB RAM
ephemeralStorage: "64Mi"
limits:
cpu: "2" # Максимум 2 CPU
memory: "2Gi" # Максимум 2GB RAM
ephemeralStorage: "256Mi"
# Nginx (в составе web pod)
# Проксирует запросы к PHP-FPM
nginx:
requests:
cpu: "0.1"
memory: "64Mi"
ephemeralStorage: "64Mi"
limits:
cpu: "0.5"
memory: "256Mi"
ephemeralStorage: "64Mi"
# Worker - обработчик фоновых задач
# Выполняет: конвертацию файлов, отправку email, генерацию отчетов
worker:
requests:
cpu: "0.5"
memory: "512Mi"
ephemeralStorage: "1Gi" # Больше места для обработки файлов
limits:
cpu: "2"
memory: "2Gi"
ephemeralStorage: "2Gi"
# WebSocket сервер
# Обеспечивает real-time функционал, например, уведомления
websocket:
requests:
cpu: "0.1"
memory: "128Mi"
ephemeralStorage: "64Mi"
limits:
cpu: "1"
memory: "512Mi"
ephemeralStorage: "64Mi"
# Geonames - сервис геолокации
# Определяет города, страны, часовые пояса
geonames:
requests:
cpu: "0.1"
memory: "196Mi"
ephemeralStorage: "64Mi"
limits:
cpu: "0.5"
memory: "256Mi"
ephemeralStorage: "64Mi"
# Conductor - планировщик задач
# ВАЖНО: Всегда должен быть в единственном экземпляре!
# Запускает задачи по расписанию (cron)
conductor:
requests:
cpu: "0.1"
memory: "64Mi"
ephemeralStorage: "64Mi"
limits:
cpu: "0.5"
memory: "256Mi"
ephemeralStorage: "64Mi"
# Jobs - одноразовые задачи (миграции, инициализация)
jobs:
requests:
cpu: "0.5"
memory: "512Mi"
ephemeralStorage: "64Mi"
limits:
cpu: "2"
memory: "2Gi"
ephemeralStorage: "256Mi"
# Настройки NATS JetStream
nats:
# Включить NATS (обязательно для работы HRBox)
enabled: true
# Docker образ NATS
image: "nats:2.8"
# Количество реплик NATS
# Для отказоустойчивости используйте 3 или 5
replicas: 3
# JetStream - персистентные очереди сообщений
jetstream:
enabled: true
# Хранилище в памяти (для небольших инсталляций)
memStorage:
enabled: true
size: "2Gi"
# Хранилище на диске (для production)
fileStorage:
enabled: false
size: "4Gi"
storageDirectory: "/data"
# StorageClass для PVC
# Используйте SSD для лучшей производительности
storageClassName: "fast-ssd"
# Настройки кластера NATS
cluster:
# Включить кластеризацию для отказоустойчивости
enabled: true
# Должно совпадать с replicas
replicas: 3
# Prometheus exporter (для мониторинга)
exporter:
enabled: false
# Config reloader - автоматическая перезагрузка конфигурации
reloader:
enabled: true
# Время ожидания graceful shutdown в секундах
terminationGracePeriodSeconds: 120
dragonfly:
# Включает или отключает развёртывание Dragonfly (Redis).
# Установите в true, чтобы активировать, или в false, чтобы отключить.
enabled: true