Быстрый старт: Kubernetes / Helm
Быстрый старт: Kubernetes / Helm
Установка Portal в Kubernetes через Helm chart и portal-cli.
Требования
- Kubernetes 1.28+
- Helm 3.12+
- kubectl с доступом к кластеру
- Ingress Controller (nginx-ingress рекомендуется)
- StorageClass для PVC (PostgreSQL, Valkey, SeaweedFS)
- 8 GB RAM на кластер (минимум для пилота)
Установка Ingress Controller (если нет)
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginxhelm install ingress-nginx ingress-nginx/ingress-nginx -n ingress --create-namespaceСборка образов (из исходников)
export PORTAL_VERSION=1.0.0docker build -f backend/Dockerfile --target api -t portal/api:$PORTAL_VERSION backenddocker build -f backend/Dockerfile --target worker -t portal/worker:$PORTAL_VERSION backenddocker build -f frontend/Dockerfile -t portal/frontend:$PORTAL_VERSION frontenddocker build -f docker/db-init.Dockerfile -t portal/db-init:$PORTAL_VERSION .
# Для minikube/k3s: загрузите образы в кластер# minikube image load portal/api:$PORTAL_VERSION# k3s ctr images import ...Установка
chmod +x deploy/portal-cli/portal-cli
# Генерирует portal-values.generated.yaml и устанавливает chart./deploy/portal-cli/portal-cli install --mode k8sProduction-профиль (PgBouncer, 2 реплики API/Worker):
./deploy/portal-cli/portal-cli install --mode k8s --prodЧто происходит при установке
- Создаётся namespace
portal - Поднимаются PostgreSQL, Valkey, SeaweedFS (StatefulSet + PVC)
- Helm hook Job
db-init: SQL-миграции, seed admin, S3 bucket - Запускаются API, Worker, Frontend, Collabora
- Создаётся Ingress для портала и Collabora
Проверка
./deploy/portal-cli/portal-cli status --mode k8s
kubectl get pods -n portalkubectl logs -n portal job/portal-db-init
# Если Ingress не настроен:kubectl port-forward -n portal svc/portal-frontend 8080:80curl http://localhost:8080/api/v1/system/versionОбновление
./deploy/portal-cli/portal-cli upgrade --mode k8sПри upgrade автоматически запускается db-init (pre-upgrade hook) для миграций.
Конфигурация
| Файл | Назначение |
|---|---|
deploy/helm/portal/values.yaml | Значения по умолчанию |
deploy/helm/portal/portal-values.generated.yaml | Сгенерированные секреты (portal-cli) |
Ключевые параметры в values.yaml:
ingress: host: portal.company.ru tls: enabled: true secretName: portal-tls
backend: replicas: 3
pgbouncer: enabled: true
postgresql: enabled: true # false + host для внешней БДВнешние сервисы
Отключите встроенные компоненты и укажите хосты:
postgresql: enabled: false host: postgres.internal port: 5432
redis: enabled: false host: valkey.internal
seaweedfs: enabled: false endpoint: s3.internalDNS
Добавьте записи для Ingress hosts:
portal.company.ru→ Ingress IPcollabora.company.ru→ Ingress IP
Или используйте /etc/hosts для пилота:
127.0.0.1 portal.local collabora.portal.localСтруктура chart
deploy/helm/portal/ Chart.yaml values.yaml templates/ backend.yaml, worker.yaml, frontend.yaml postgresql.yaml, redis.yaml, seaweedfs.yaml db-init-job.yaml # Helm hooks ingress.yaml