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 "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 }}
|
||||
@@ -80,4 +80,52 @@ resources:
|
||||
memory: {{ .Values.resources.jobs.limits.memory | quote }}
|
||||
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 }}
|
||||
+101
-27
@@ -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: ""
|
||||
|
||||
# Окружение для группировки ошибок
|
||||
@@ -150,6 +149,53 @@ app:
|
||||
# URL внутреннего сервиса geonames
|
||||
# Не меняйте, если используете стандартный деплой
|
||||
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
|
||||
# Формат: "название-топика:количество-воркеров"
|
||||
@@ -187,15 +233,6 @@ app:
|
||||
folderId: ""
|
||||
# API ключ для Yandex Cloud
|
||||
apiKey: ""
|
||||
|
||||
# OpenAI интеграция
|
||||
openai:
|
||||
# API ключ OpenAI
|
||||
apiKey: ""
|
||||
# Прокси ключ (если используете прокси)
|
||||
proxyKey: ""
|
||||
# Base URL для API (можно указать прокси)
|
||||
baseUri: ""
|
||||
|
||||
# Настройки безопасности
|
||||
security:
|
||||
@@ -210,13 +247,18 @@ secrets:
|
||||
# Используется для защиты от XSS атак
|
||||
# Генерация: openssl rand -hex 16
|
||||
cookieValidationKey: ""
|
||||
|
||||
|
||||
# Ключ шифрования данных (64 символа)
|
||||
# ВАЖНО: Не теряйте этот ключ! Без него невозможно расшифровать данные
|
||||
# Используется для шифрования паролей интеграций (S3, ADFS и др.)
|
||||
# Генерация: openssl rand -base64 48
|
||||
encryptionKey: ""
|
||||
|
||||
# Секрет для внутренней коммуникации микросервисов (64 символа)
|
||||
# Используется для защиты внутренних API вызовов между сервисами
|
||||
# Генерация: openssl rand -base64 48
|
||||
servicesInternalSecret: ""
|
||||
|
||||
# Настройки Ingress
|
||||
ingress:
|
||||
# Включить Ingress
|
||||
@@ -280,19 +322,7 @@ resources:
|
||||
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:
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user