new hrbox chart version
This commit is contained in:
+2
-2
@@ -4,10 +4,10 @@ description: Simplified HRBox application Helm chart
|
||||
type: application
|
||||
|
||||
# Версия самого чарта. Увеличивается при каждом изменении чарта
|
||||
version: 1.2.0
|
||||
version: 2.0.0
|
||||
|
||||
# Версия приложения, которое деплоится. Не обязательно увеличивать при изменении чарта
|
||||
appVersion: "2.0.0"
|
||||
appVersion: "3.0.0"
|
||||
|
||||
# Ключевые слова для поиска
|
||||
keywords:
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
# Chatbox (WebSocket server) - обеспечивает real-time функционал
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-websocket
|
||||
name: {{ .Chart.Name }}-chatbox
|
||||
labels:
|
||||
app: websocket
|
||||
app: chatbox
|
||||
spec:
|
||||
minReadySeconds: 5
|
||||
strategy:
|
||||
@@ -12,14 +13,14 @@ spec:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
replicas: {{ .Values.app.replicas.websocket }}
|
||||
replicas: {{ .Values.app.replicas.chatbox }}
|
||||
selector:
|
||||
matchLabels:
|
||||
service: {{ .Chart.Name }}-websocket
|
||||
service: {{ .Chart.Name }}-chatbox
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
service: {{ .Chart.Name }}-websocket
|
||||
service: {{ .Chart.Name }}-chatbox
|
||||
annotations:
|
||||
prometheus.io/scrape: 'true'
|
||||
prometheus.io/port: '9797'
|
||||
@@ -28,21 +29,21 @@ spec:
|
||||
imagePullSecrets:
|
||||
- name: regsecret
|
||||
containers:
|
||||
- name: websocket
|
||||
{{- include "websocket_resources" . | indent 10}}
|
||||
image: cr.yandex/crphnph9c2s776j32sjd/hrbox-websocket:2.1
|
||||
- name: chatbox
|
||||
image: {{ .Values.app.chatbox.image }}
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
{{- include "envs_all" . | indent 12 }}
|
||||
{{- include "chatbox_resources" . | indent 10 }}
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-websocket
|
||||
name: {{ .Chart.Name }}-chatbox
|
||||
spec:
|
||||
selector:
|
||||
service: {{ .Chart.Name }}-websocket
|
||||
service: {{ .Chart.Name }}-chatbox
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-document-converter
|
||||
labels:
|
||||
app: document-converter
|
||||
spec:
|
||||
minReadySeconds: 5
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
replicas: {{ .Values.app.document_converter.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
service: {{ .Chart.Name }}-document-converter
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
service: {{ .Chart.Name }}-document-converter
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: regsecret
|
||||
containers:
|
||||
- name: document-converter
|
||||
image: {{ .Values.app.document_converter.image }}
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
{{- include "envs_all" . | indent 12 }}
|
||||
{{- include "document_converter_resources" . | indent 10 }}
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-goworker
|
||||
labels:
|
||||
app: goworker
|
||||
spec:
|
||||
minReadySeconds: 5
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
replicas: {{ .Values.app.goworker.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
service: {{ .Chart.Name }}-goworker
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
service: {{ .Chart.Name }}-goworker
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: regsecret
|
||||
containers:
|
||||
- name: goworker
|
||||
stdin: true
|
||||
tty: true
|
||||
image: {{ .Values.app.goworker.image }}
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
{{- include "envs_all" . | indent 12 }}
|
||||
{{- include "goworker_resources" . | indent 10 }}
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-goworker
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "8686"
|
||||
prometheus.io/path: "/metrics"
|
||||
spec:
|
||||
selector:
|
||||
service: {{ .Chart.Name }}-goworker
|
||||
ports:
|
||||
- name: http
|
||||
port: 8686
|
||||
targetPort: 8686
|
||||
protocol: TCP
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-kedoca
|
||||
labels:
|
||||
app: kedoca
|
||||
spec:
|
||||
minReadySeconds: 5
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
replicas: {{ .Values.app.kedoca.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
service: {{ .Chart.Name }}-kedoca
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
service: {{ .Chart.Name }}-kedoca
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: regsecret
|
||||
containers:
|
||||
- name: kedoca
|
||||
image: {{ .Values.app.kedoca.image }}
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
{{- include "envs_all" . | indent 12 }}
|
||||
{{- include "envs_kedoca" . | indent 12 }}
|
||||
ports:
|
||||
- containerPort: 8558
|
||||
{{- include "kedoca_resources" . | indent 10 }}
|
||||
{{- if .Values.app.kedoca.secretName }}
|
||||
volumeMounts:
|
||||
- name: ca-cert
|
||||
mountPath: /ca-cert
|
||||
{{- end }}
|
||||
{{- if .Values.app.kedoca.secretName }}
|
||||
volumes:
|
||||
- name: ca-cert
|
||||
secret:
|
||||
secretName: {{ .Values.app.kedoca.secretName }}
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-kedoca
|
||||
labels:
|
||||
app: kedoca
|
||||
spec:
|
||||
selector:
|
||||
service: {{ .Chart.Name }}-kedoca
|
||||
ports:
|
||||
- name: http
|
||||
port: 8558
|
||||
targetPort: 8558
|
||||
protocol: TCP
|
||||
type: ClusterIP
|
||||
@@ -190,12 +190,54 @@
|
||||
- name: YANDEX_CLOUD_AI_API_KEY
|
||||
value: {{ .Values.app.ai.yandex.apiKey | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.app.ai.openai.apiKey }}
|
||||
- name: OPENAI_API_KEY
|
||||
value: {{ .Values.app.ai.openai.apiKey | quote }}
|
||||
- name: OPENAI_PROXY_KEY
|
||||
value: {{ .Values.app.ai.openai.proxyKey | quote }}
|
||||
- name: OPENAI_BASE_URI
|
||||
value: {{ .Values.app.ai.openai.baseUri | quote }}
|
||||
|
||||
# Integration Services
|
||||
- name: GOWORKER_URL
|
||||
value: {{ .Values.app.goworker.url | quote }}
|
||||
{{- if .Values.app.goworker.sentryDsn }}
|
||||
- name: GOWORKER_SENTRY_DSN
|
||||
value: {{ .Values.app.goworker.sentryDsn | quote }}
|
||||
{{- end }}
|
||||
- name: GOWORKER_PUSH_MIN_INTERVAL
|
||||
value: {{ .Values.app.goworker.pushMinInterval | quote }}
|
||||
|
||||
- name: KEDOCA_URL
|
||||
value: {{ .Values.app.kedoca.url | quote }}
|
||||
- name: TSP_URL
|
||||
value: "http://qs.cryptopro.ru/tsp/tsp.srf"
|
||||
|
||||
# Internal Services
|
||||
- name: SERVICES_INTERNAL_SECRET
|
||||
value: {{ .Values.secrets.servicesInternalSecret | default "QrrH84K2dG5JfoYxi4ZNPyg5p2LEj6rN69z5tIQYkfY6SJZ8GDXOcRjTNnefbOx5" | quote }}
|
||||
|
||||
# Document Converter
|
||||
- name: PYTHONUNBUFFERED
|
||||
value: "1"
|
||||
- name: DOCCONV_MAX_PARALLEL_TASKS
|
||||
value: "1"
|
||||
|
||||
# AI Features
|
||||
- name: AI_DOCS_INDEX_ENABLED
|
||||
value: "true"
|
||||
- name: AI_SEMANTIC_INDEX_ENABLED
|
||||
value: "true"
|
||||
- name: AI_SEMANTIC_INDEX_USE_BATCH
|
||||
value: "true"
|
||||
|
||||
# Chatbox
|
||||
{{- if .Values.app.chatbox.sentryDsn }}
|
||||
- name: CHATBOX_SENTRY_DSN
|
||||
value: {{ .Values.app.chatbox.sentryDsn | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "envs_kedoca" }}
|
||||
- name: ROOT_CA_PASS
|
||||
value: {{ .Values.app.kedoca.rootCaPass | quote }}
|
||||
- name: KEDO_ENGINE
|
||||
value: {{ .Values.app.kedoca.engine | quote }}
|
||||
- name: KEDO_ALGORITHM
|
||||
value: {{ .Values.app.kedoca.algorithm | quote }}
|
||||
- name: KEDO_PKEYOPT
|
||||
value: {{ .Values.app.kedoca.pkeyopt | quote }}
|
||||
{{- end }}
|
||||
@@ -81,3 +81,51 @@ resources:
|
||||
cpu: {{ .Values.resources.jobs.limits.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.jobs.limits.ephemeralStorage | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "goworker_resources" }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.resources.goworker.requests.memory | quote }}
|
||||
cpu: {{ .Values.resources.goworker.requests.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.goworker.requests.ephemeralStorage | quote }}
|
||||
limits:
|
||||
memory: {{ .Values.resources.goworker.limits.memory | quote }}
|
||||
cpu: {{ .Values.resources.goworker.limits.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.goworker.limits.ephemeralStorage | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "kedoca_resources" }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.resources.kedoca.requests.memory | quote }}
|
||||
cpu: {{ .Values.resources.kedoca.requests.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.kedoca.requests.ephemeralStorage | quote }}
|
||||
limits:
|
||||
memory: {{ .Values.resources.kedoca.limits.memory | quote }}
|
||||
cpu: {{ .Values.resources.kedoca.limits.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.kedoca.limits.ephemeralStorage | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "document_converter_resources" }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.resources.document_converter.requests.memory | quote }}
|
||||
cpu: {{ .Values.resources.document_converter.requests.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.document_converter.requests.ephemeralStorage | quote }}
|
||||
limits:
|
||||
memory: {{ .Values.resources.document_converter.limits.memory | quote }}
|
||||
cpu: {{ .Values.resources.document_converter.limits.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.document_converter.limits.ephemeralStorage | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "chatbox_resources" }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.resources.chatbox.requests.memory | quote }}
|
||||
cpu: {{ .Values.resources.chatbox.requests.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.chatbox.requests.ephemeralStorage | quote }}
|
||||
limits:
|
||||
memory: {{ .Values.resources.chatbox.limits.memory | quote }}
|
||||
cpu: {{ .Values.resources.chatbox.limits.cpu | quote }}
|
||||
ephemeral-storage: {{ .Values.resources.chatbox.limits.ephemeralStorage | quote }}
|
||||
{{- end }}
|
||||
+99
-25
@@ -32,12 +32,12 @@ app:
|
||||
# Рекомендации по масштабированию:
|
||||
# - web: 2-10 реплик в зависимости от количества пользователей
|
||||
# - worker: 2-5 реплик для обработки фоновых задач
|
||||
# - websocket: 2-6 реплик для real-time функционала
|
||||
# - chatbox: 2-6 реплик для real-time функционала (WebSocket)
|
||||
# - geonames: 1-2 реплики (сервис не требователен к ресурсам)
|
||||
replicas:
|
||||
web: 2
|
||||
worker: 2
|
||||
websocket: 2
|
||||
chatbox: 2
|
||||
geonames: 1
|
||||
|
||||
# PostgreSQL база данных
|
||||
@@ -136,10 +136,9 @@ app:
|
||||
# Проверять SSL сертификат сервера
|
||||
sslVerifyPeer: "false"
|
||||
|
||||
# Sentry для мониторинга ошибок (опционально)
|
||||
# Sentry для мониторинга ошибок
|
||||
sentry:
|
||||
# DSN для отправки ошибок
|
||||
# Оставьте пустым, чтобы отключить
|
||||
dsn: ""
|
||||
|
||||
# Окружение для группировки ошибок
|
||||
@@ -151,6 +150,53 @@ app:
|
||||
# Не меняйте, если используете стандартный деплой
|
||||
url: "http://hrbox-geonames:8181"
|
||||
|
||||
# Goworker - интеграции с мессенджерами (Telegram, WhatsApp и др.)
|
||||
goworker:
|
||||
# URL внутреннего сервиса goworker
|
||||
url: "http://hrbox-goworker:8686"
|
||||
# Docker образ goworker
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-goworker:2.7"
|
||||
# Количество реплик
|
||||
replicas: 2
|
||||
# Минимальный интервал между push-уведомлениями
|
||||
pushMinInterval: "5m"
|
||||
# Sentry DSN для мониторинга ошибок
|
||||
sentryDsn: ""
|
||||
|
||||
# Kedoca - сервис электронной подписи (ГОСТ, OpenSSL)
|
||||
kedoca:
|
||||
# URL внутреннего сервиса kedoca
|
||||
url: "http://hrbox-kedoca:8558"
|
||||
# Docker образ kedoca
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-kedoca:0.8"
|
||||
# Количество реплик
|
||||
replicas: 1
|
||||
# Пароль для корневого сертификата
|
||||
rootCaPass: "hrbox"
|
||||
# Криптографический движок: "gost" или "openssl"
|
||||
engine: "gost"
|
||||
# Алгоритм: "gost2012_256" для GОСТ или "rsa" для OpenSSL
|
||||
algorithm: "gost2012_256"
|
||||
# Параметры ключа: "paramset:A" для ГОСТ или "rsa_keygen_bits:2048" для RSA
|
||||
pkeyopt: "paramset:A"
|
||||
# Имя Kubernetes Secret с сертификатами
|
||||
# Если указано, будет смонтирован в /ca-cert
|
||||
secretName: ""
|
||||
|
||||
# Document Converter - конвертер документов (PDF, DOCX и др.)
|
||||
document_converter:
|
||||
# Docker образ document converter
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-document-converter:latest"
|
||||
# Количество реплик
|
||||
replicas: 1
|
||||
|
||||
# Chatbox - WebSocket сервер для real-time функционала
|
||||
chatbox:
|
||||
# Docker образ chatbox
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-chatbox:3.0"
|
||||
# Sentry DSN для мониторинга ошибок
|
||||
sentryDsn: ""
|
||||
|
||||
# Настройки воркеров Launchpad
|
||||
# Формат: "название-топика:количество-воркеров"
|
||||
launchpad:
|
||||
@@ -188,15 +234,6 @@ app:
|
||||
# API ключ для Yandex Cloud
|
||||
apiKey: ""
|
||||
|
||||
# OpenAI интеграция
|
||||
openai:
|
||||
# API ключ OpenAI
|
||||
apiKey: ""
|
||||
# Прокси ключ (если используете прокси)
|
||||
proxyKey: ""
|
||||
# Base URL для API (можно указать прокси)
|
||||
baseUri: ""
|
||||
|
||||
# Настройки безопасности
|
||||
security:
|
||||
# Разрешить полный доступ к iframe
|
||||
@@ -217,6 +254,11 @@ secrets:
|
||||
# Генерация: openssl rand -base64 48
|
||||
encryptionKey: ""
|
||||
|
||||
# Секрет для внутренней коммуникации микросервисов (64 символа)
|
||||
# Используется для защиты внутренних API вызовов между сервисами
|
||||
# Генерация: openssl rand -base64 48
|
||||
servicesInternalSecret: ""
|
||||
|
||||
# Настройки Ingress
|
||||
ingress:
|
||||
# Включить Ingress
|
||||
@@ -281,18 +323,6 @@ resources:
|
||||
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:
|
||||
@@ -329,6 +359,50 @@ resources:
|
||||
memory: "2Gi"
|
||||
ephemeralStorage: "256Mi"
|
||||
|
||||
# Goworker - интеграции с мессенджерами
|
||||
goworker:
|
||||
requests:
|
||||
cpu: "0.1"
|
||||
memory: "196Mi"
|
||||
ephemeralStorage: "64Mi"
|
||||
limits:
|
||||
cpu: "0.3"
|
||||
memory: "256Mi"
|
||||
ephemeralStorage: "64Mi"
|
||||
|
||||
# Kedoca - электронная подпись
|
||||
kedoca:
|
||||
requests:
|
||||
cpu: "0.1"
|
||||
memory: "196Mi"
|
||||
ephemeralStorage: "64Mi"
|
||||
limits:
|
||||
cpu: "0.5"
|
||||
memory: "256Mi"
|
||||
ephemeralStorage: "64Mi"
|
||||
|
||||
# Document Converter - конвертер документов
|
||||
document_converter:
|
||||
requests:
|
||||
cpu: "1"
|
||||
memory: "512Mi"
|
||||
ephemeralStorage: "512Mi"
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: "1024Mi"
|
||||
ephemeralStorage: "1024Mi"
|
||||
|
||||
# Chatbox - WebSocket сервер
|
||||
chatbox:
|
||||
requests:
|
||||
cpu: "0.3"
|
||||
memory: "96Mi"
|
||||
ephemeralStorage: "128Mi"
|
||||
limits:
|
||||
cpu: "0.3"
|
||||
memory: "192Mi"
|
||||
ephemeralStorage: "256Mi"
|
||||
|
||||
# Настройки NATS JetStream
|
||||
nats:
|
||||
# Включить NATS (обязательно для работы HRBox)
|
||||
|
||||
+233
@@ -0,0 +1,233 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to the HRBox Helm chart will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.0.0] - 2026-01-30
|
||||
|
||||
Масштабная актуализация чарта на основе продового окружения hrbox. Синхронизированы версии компонентов, добавлены новые микросервисы, обновлены переменные окружения.
|
||||
|
||||
### Added
|
||||
|
||||
#### Новые микросервисы
|
||||
|
||||
- **Goworker** (`09-goworker.yaml`) - Сервис интеграций с мессенджерами
|
||||
- Образ: `hrbox-goworker:2.7`
|
||||
- Поддержка Telegram, WhatsApp и других мессенджеров
|
||||
- Prometheus metrics на порту 8686
|
||||
- Настройки: `app.goworker` в values.yaml
|
||||
- Переменные: `GOWORKER_URL`, `GOWORKER_PUSH_MIN_INTERVAL`, `GOWORKER_SENTRY_DSN`
|
||||
|
||||
- **Kedoca** (`09-kedoca.yaml`) - Сервис электронной подписи
|
||||
- Образ: `hrbox-kedoca:0.8`
|
||||
- Поддержка ГОСТ и OpenSSL
|
||||
- Монтирование Kubernetes Secret с CA сертификатами
|
||||
- Настройки: `app.kedoca` в values.yaml
|
||||
- Переменные: `KEDOCA_URL`, `TSP_URL`, `ROOT_CA_PASS`, `KEDO_ENGINE`, `KEDO_ALGORITHM`, `KEDO_PKEYOPT`
|
||||
|
||||
- **Document Converter** (`09-document-converter.yaml`) - Конвертер документов
|
||||
- Образ: `hrbox-document-converter:latest`
|
||||
- Конвертация PDF, DOCX и других форматов
|
||||
- Настройки: `app.document_converter` в values.yaml
|
||||
- Переменные: `PYTHONUNBUFFERED`, `DOCCONV_MAX_PARALLEL_TASKS`
|
||||
|
||||
#### Новые переменные окружения
|
||||
|
||||
- `SERVICES_INTERNAL_SECRET` - Секрет для межсервисной коммуникации
|
||||
- `AI_DOCS_INDEX_ENABLED` - Включение индексации документов через AI
|
||||
- `AI_SEMANTIC_INDEX_ENABLED` - Семантическое индексирование
|
||||
- `AI_SEMANTIC_INDEX_USE_BATCH` - Пакетная обработка при индексации
|
||||
- `CHATBOX_SENTRY_DSN` - Sentry DSN для Chatbox
|
||||
- `SINGLE_TENANT` - Режим single-tenant для on-premise установок
|
||||
- `TSP_URL` - URL службы временных меток (http://qs.cryptopro.ru/tsp/tsp.srf)
|
||||
|
||||
#### Новые секреты
|
||||
|
||||
- `secrets.servicesInternalSecret` - Секрет для защиты внутренних API между микросервисами
|
||||
- Генерация: `openssl rand -base64 48`
|
||||
|
||||
#### Resource definitions
|
||||
|
||||
Добавлены resource limits/requests для новых сервисов:
|
||||
- `resources.goworker` - CPU: 0.1-0.3, Memory: 196Mi-256Mi
|
||||
- `resources.kedoca` - CPU: 0.1-0.5, Memory: 196Mi-256Mi
|
||||
- `resources.document_converter` - CPU: 1, Memory: 512Mi-1024Mi, Ephemeral: 512Mi-1024Mi
|
||||
- `resources.chatbox` - CPU: 0.3, Memory: 96Mi-192Mi
|
||||
|
||||
### Changed
|
||||
|
||||
#### Обновление версий
|
||||
|
||||
- **Chart version**: `1.2.0` → `2.0.0`
|
||||
- **App version**: `2.0.0` → `3.0.0`
|
||||
|
||||
#### Chatbox (ранее WebSocket)
|
||||
|
||||
- **Образ обновлен**: `hrbox-websocket:2.1` → `hrbox-chatbox:3.0`
|
||||
- **Переименован deployment**: `{chart}-websocket` → `{chart}-chatbox`
|
||||
- **Переименован service**: `{chart}-websocket` → `{chart}-chatbox`
|
||||
- **Переименована конфигурация**:
|
||||
- `app.replicas.websocket` → `app.replicas.chatbox`
|
||||
- Файл остался `03-websocket.yaml` но содержимое обновлено на chatbox
|
||||
|
||||
#### Архитектура
|
||||
|
||||
- Все микросервисы теперь **обязательны** (не опциональны)
|
||||
- Удалены условия `{{- if .Values.app.goworker }}` из templates
|
||||
- Удалены `| default` значения для обязательных параметров
|
||||
- Goworker, Kedoca, Document Converter, Chatbox всегда деплоятся
|
||||
|
||||
#### Templates
|
||||
|
||||
- `_envs.tpl`:
|
||||
- Упрощена логика переменных окружения
|
||||
- Удалены условия для обязательных сервисов
|
||||
- Добавлен блок `envs_kedoca` для настроек криптографии
|
||||
|
||||
- `_resources.tpl`:
|
||||
- Добавлены определения: `goworker_resources`, `kedoca_resources`, `document_converter_resources`, `chatbox_resources`
|
||||
|
||||
- `_helpers.tpl`:
|
||||
- Без изменений, сохранена совместимость
|
||||
|
||||
### Removed
|
||||
|
||||
#### Устаревшие компоненты
|
||||
|
||||
- **WebSocket сервис** - Полностью заменен на Chatbox 3.0
|
||||
- Удалено: `app.replicas.websocket` из values.yaml
|
||||
- Удалено: `resources.websocket` из values.yaml
|
||||
|
||||
#### Устаревшие интеграции
|
||||
|
||||
- **OpenAI** - Интеграция удалена, используйте HRBox Hub
|
||||
- Удален блок: `app.ai.openai` с полями `apiKey`, `proxyKey`, `baseUri`
|
||||
- Удалены переменные: `OPENAI_API_KEY`, `OPENAI_PROXY_KEY`, `OPENAI_BASE_URI`
|
||||
|
||||
### Migration Guide
|
||||
|
||||
#### Миграция с версии 1.x на 2.0
|
||||
|
||||
**Шаг 1: Обновите values.yaml**
|
||||
|
||||
```yaml
|
||||
# 1. Переименуйте websocket в chatbox
|
||||
app:
|
||||
replicas:
|
||||
# websocket: 2 # УДАЛИТЬ
|
||||
chatbox: 2 # ДОБАВИТЬ
|
||||
|
||||
# 2. Добавьте новые сервисы
|
||||
app:
|
||||
goworker:
|
||||
url: "http://hrbox-goworker:8686"
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-goworker:2.7"
|
||||
replicas: 2
|
||||
pushMinInterval: "5m"
|
||||
sentryDsn: ""
|
||||
|
||||
kedoca:
|
||||
url: "http://hrbox-kedoca:8558"
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-kedoca:0.8"
|
||||
replicas: 1
|
||||
rootCaPass: "hrbox"
|
||||
engine: "gost"
|
||||
algorithm: "gost2012_256"
|
||||
pkeyopt: "paramset:A"
|
||||
secretName: ""
|
||||
|
||||
document_converter:
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-document-converter:latest"
|
||||
replicas: 1
|
||||
|
||||
chatbox:
|
||||
image: "cr.yandex/crphnph9c2s776j32sjd/hrbox-chatbox:3.0"
|
||||
sentryDsn: ""
|
||||
|
||||
# 3. Добавьте новый секрет
|
||||
secrets:
|
||||
servicesInternalSecret: "" # Сгенерируйте: openssl rand -base64 48
|
||||
|
||||
# 4. Удалите OpenAI (если был настроен)
|
||||
app:
|
||||
ai:
|
||||
# openai: # УДАЛИТЬ весь блок
|
||||
# apiKey: ""
|
||||
# proxyKey: ""
|
||||
# baseUri: ""
|
||||
```
|
||||
|
||||
**Шаг 2: Сгенерируйте новый секрет**
|
||||
|
||||
```bash
|
||||
# Генерация servicesInternalSecret
|
||||
openssl rand -base64 48
|
||||
```
|
||||
|
||||
**Шаг 3: Обновите Chart**
|
||||
|
||||
```bash
|
||||
helm upgrade hrbox .helm/ \
|
||||
--namespace hrbox \
|
||||
--values your-values.yaml
|
||||
```
|
||||
|
||||
**Шаг 4: Проверьте новые поды**
|
||||
|
||||
```bash
|
||||
# Проверка новых сервисов
|
||||
kubectl get pods -n hrbox -l app=goworker
|
||||
kubectl get pods -n hrbox -l app=kedoca
|
||||
kubectl get pods -n hrbox -l app=document-converter
|
||||
kubectl get pods -n hrbox -l app=chatbox
|
||||
|
||||
# Убедитесь что старый websocket удален
|
||||
kubectl get pods -n hrbox -l app=websocket # Должно быть пусто
|
||||
```
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
⚠️ **Критические изменения, требующие действий:**
|
||||
|
||||
1. **WebSocket → Chatbox**: Обязательное переименование конфигурации
|
||||
- Service name изменился с `{chart}-websocket` на `{chart}-chatbox`
|
||||
- Если есть зависимости от старого имени сервиса - обновите их
|
||||
|
||||
2. **Новые обязательные сервисы**: Goworker, Kedoca, Document Converter всегда деплоятся
|
||||
- Требуются дополнительные ресурсы кластера
|
||||
- Проверьте доступность ресурсов перед обновлением
|
||||
|
||||
3. **Новый секрет**: `secrets.servicesInternalSecret` обязателен
|
||||
- Приложение не запустится без этого секрета
|
||||
- Сгенерируйте перед деплоем
|
||||
|
||||
4. **OpenAI удален**: Используйте HRBox Hub для AI интеграций
|
||||
- Миграция на Hub API требуется если использовали OpenAI
|
||||
|
||||
### Notes
|
||||
|
||||
- Все образы сервисов используют registry: `cr.yandex/crphnph9c2s776j32sjd/`
|
||||
- Для работы Kedoca с сертификатами создайте Kubernetes Secret и укажите в `kedoca.secretName`
|
||||
- Goworker экспортирует метрики Prometheus на `/metrics` (порт 8686)
|
||||
- Document Converter требует больше ephemeral storage (512Mi-1024Mi)
|
||||
|
||||
---
|
||||
|
||||
## [1.2.0] - Previous version
|
||||
|
||||
Упрощенный Helm chart для on-premise установок HRBox.
|
||||
|
||||
### Initial Features
|
||||
|
||||
- Базовые компоненты: web, worker, websocket, geonames, conductor
|
||||
- PostgreSQL, Redis, NATS JetStream
|
||||
- Ingress с TLS
|
||||
- ConfigMaps и resource limits
|
||||
- Migration и update jobs
|
||||
|
||||
---
|
||||
|
||||
[2.0.0]: #200---2026-01-30
|
||||
[1.2.0]: #120---previous-version
|
||||
Reference in New Issue
Block a user