Развёртывание Hub в Kubernetes-кластере с помощью Helm-чарта
Установка через Kubernetes / Helm
Используйте этот способ, если ваша инфраструктура построена на Kubernetes.
Требования
- Kubernetes 1.26+
- Helm 3.8+ (с поддержкой OCI)
Шаг 1. Создайте файл values-client.yaml
Чарт Hub распространяется как OCI-артефакт — клонировать репозиторий или запускать helm dependency update не нужно, авторизация в реестре не требуется. Всё, что вам нужно, — файл значений.
Создайте файл values-client.yaml со следующим содержимым:
# Секреты (используются, если existingSecret пустой).
# Чтобы взять готовый Kubernetes Secret, задайте existingSecret и удалите блок secret.
existingSecret: ""
secret:
dbPassword: "" # пароль PostgreSQL — придумайте надёжный
adminUsername: "admin" # логин первого администратора
adminPassword: "" # пароль администратора — придумайте надёжный
cipherSalt: "" # соль шифрования: openssl rand -hex 32
app:
jvm:
opts: "-Xmx512m -Xms256m -XX:+UseG1GC -Duser.timezone=UTC"
configVars:
HUB_NAME: "My Company Hub" # отображаемое имя Hub
CORE_GRPC_HOST: "grpc.bidder-box.ru" # адрес Core — уже заполнен
CORE_PORTAL_URL: "app.bidder-box.ru" # URL портала — уже заполнен
# Образ Hub уже привязан к версии чарта (--version X.Y.Z) — переопределять не нужно.
# image:
# tag: ""
# Внешний доступ по домену (опционально) — см. шаг «Настройте Ingress».
# ingress:
# enabled: true
# className: nginx
# hosts:
# - host: hub.mycompany.com
# paths:
# - path: /
# pathType: Prefix
Адрес Core и URL портала уже заполнены — осталось задать секреты в блоке secret (следующий шаг).
Шаг 2. Заполните секреты
В блоке secret файла values-client.yaml заполните значения:
| Параметр | Что вписать |
|---|---|
secret.dbPassword | Пароль PostgreSQL |
secret.adminPassword | Пароль первого администратора Hub |
secret.cipherSalt | Соль шифрования (сгенерируйте: openssl rand -hex 32) |
CORE_GRPC_HOST и CORE_PORTAL_URL уже заполнены в шаблоне — менять их не нужно.
Необязательные параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
app.configVars.HUB_NAME | Hub | Отображаемое имя Hub |
app.jvm.opts | -Xmx512m -Xms256m -XX:+UseG1GC | Параметры JVM |
resources.requests.memory | 512Mi | Запрашиваемая память |
resources.limits.memory | 1G | Лимит памяти |
postgresql.primary.persistence.size | 10Gi | Размер диска PostgreSQL |
Примечание: Порт Core gRPC и тип TLS-согласования жёстко задаются в образе приложения (порт 443, TLS) и не переопределяются через values.yaml.
Шаг 3. Настройте Ingress (опционально)
Helm-чарт разворачивает тот же образ bidder-hub, что и Docker (порт 8082). Образ содержит и REST API, и веб-интерфейс — отдельного фронтенд-контейнера в чарте нет, интерфейс отдаёт сам Hub. После установки через Helm веб-интерфейс доступен на том же порту 8082, что и API.
Если нужен внешний доступ к Hub (веб-интерфейс и API) по доменному имени, добавьте в values-client.yaml:
ingress:
enabled: true
className: nginx
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
hosts:
- host: hub.mycompany.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: hub-tls
hosts:
- hub.mycompany.com
Шаг 4. Управление секретами
Вариант A (простой): чарт создаёт Secret автоматически.
existingSecret: ""
Вариант B (для production): используйте существующий K8s Secret.
existingSecret: "bidder-hub-secret"
Шаг 5. Установите чарт
Укажите версию, полученную от вендора (например, 1.0.8). Версия чарта, образа Hub и appVersion совпадают — обновляются как единая единица.
helm install bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
--version <version> -f values-client.yaml
Шаг 6. Проверьте состояние
kubectl get pods -l app.kubernetes.io/name=bidder-hub
kubectl logs -f deployment/bidder-hub
Поды должны перейти в статус Running. Чтобы открыть веб-интерфейс Hub (порт 8082), пробросьте порт на локальную машину:
kubectl port-forward svc/bidder-hub 8082:8082
Затем откройте в браузере http://localhost:8082/ — если открылась страница Hub, всё работает. Проверить ответ Hub можно и командой:
curl http://localhost:8082/public/api/v1/activation/status
Обновление
Версия чарта и образа Hub обновляются вместе. Узнайте новую версию у вендора и выполните:
# 1. Создайте резервную копию базы данных (см. раздел ниже)
# 2. Обновите до новой версии
helm upgrade bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
--version <new-version> -f values-client.yaml
# 3. Проверьте состояние
kubectl rollout status deployment/bidder-hub
Резервное копирование
Перед обновлением и регулярно в режиме эксплуатации создавайте резервную копию базы данных PostgreSQL.
PostgreSQL разворачивается как Bitnami StatefulSet — обращайтесь напрямую к поду, а не к Deployment.
Найдите под PostgreSQL:
kubectl get pods -n <namespace> -l app.kubernetes.io/name=postgresql
Создайте резервную копию:
kubectl exec -n <namespace> bidder-hub-postgresql-0 -- \
pg_dump -U hub hub > backup_$(date +%Y%m%d_%H%M%S).sql
Восстановление:
kubectl exec -n <namespace> -i bidder-hub-postgresql-0 -- \
psql -U hub hub < backup_YYYYMMDD_HHMMSS.sql
Перед обновлением Hub всегда создавайте резервную копию базы данных.
Откат к предыдущей версии
Быстрый путь — откат к предыдущей ревизии Helm:
helm rollback bidder-hub
Откат к конкретной версии (полностью воспроизводимо):
helm upgrade bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
--version <previous-version> -f values-client.yaml
Если схема базы данных изменилась — восстановите её из резервной копии перед откатом чарта.
Следующий шаг
Веб-интерфейс Hub доступен сразу после установки на порту 8082 (его отдаёт сам образ bidder-hub) — открыть его можно через Ingress или kubectl port-forward.