ApowerB в Kubernetes: одна команда Helm и скрытые 90% деплоя агентной платформы

Compose на ноутбуке, Helm когда storage уже живой, ingress и TLS для прода: три входа в open-source платформу агентов ApowerB. Ключи моделей уже в агентах, а вынос runtime в свой кластер без облачной обёртки упирается не в слоган «one command», а в secrets, storage class и повторную подачу values на каждом upgrade. Chart 0.4.23 в гайде раскладывает те же три уровня без мифа, что кластер «где-то уже есть».
Что тянет chart ApowerB кроме UI
Один контейнер с формой тут не спасёт. OCI-chart apowerb-chart (подпись cosign) поднимает runtime агентов целиком: backend и Next.js-фронт, PostgreSQL с агентами в строках БД (при load они становятся executable modules), пайплайн th2etl с seed job, локальные логи и trace в th2pulse, otel-collector, опциональный th2forecast (по умолчанию выключен), PVC под uploads, RAG-артефакты и пулы агентов.
Orchestration, log store и телеметрия нужны, когда агенты смотрят на людей, а не на демо-страницу. Для соло-команды, которая уже подключала model keys к агентам и хочет self-hosted вместо SaaS, это важнее красивого «one command» в заголовке.
Быстрый путь: secrets, install и ловушка upgrade
Chart не стартует без secrets. Отдельный values-secrets.yaml: encryptKey, ключи API для th2etl/th2pulse, пароль Postgres. Генерируйте с umask 077, права chmod 600.
Установка сводится к одной команде:
helm upgrade --install apowerb \
oci://registry-1.docker.io/apowerb/apowerb-chart --version 0.4.23 \
--namespace apowerb --create-namespace \
--values values-secrets.yaml --timeout 10m
UI: kubectl port-forward svc/apowerb-frontend 13000:3000 → http://localhost:13000, в интерфейсе задаёте model key, платформа считается рабочей на кластере.
Операционная ловушка: на каждом
helm upgradeснова передавайте--values values-secrets.yaml. Без файла credentials могут «ротироваться» под уже живой БД. Храните файл в secret store, не в Git.
Прод: storage, ingress, TLS и DNS
Пустой storage class обнуляет «одну команду». Минимум для кластера: Kubernetes 1.28+, ориентир 3 nodes × 4 vCPU / 8 GB, проверки kubectl get nodes, storageclass, ingressclass.
Что обычно выпадает из коротких постов:
- Storage: если
storageclassпуст, пример с local-path-provisioner; ловушка WaitForFirstConsumer (PVC вPending, пока нет pod). - Ingress: класс Traefik или ingress-nginx и EXTERNAL-IP под DNS.
- TLS: cert-manager, сначала Let's Encrypt staging (лимит 5 failures/hour); критично поле
ingressClassName, не устаревшая annotationclass, иначе ACME challenge зависает вReady: False. - Helm с ingress/TLS: chart 0.4.23,
--set ingress.enabled=true, host,ingress.tlsEnabled, issuer cert-manager; опциональноsuperadmin.email/superadmin.password. - DNS: A-запись на EXTERNAL-IP, проверка certificate, затем production ACME issuer.
Storage, ingress и TLS съедают ту «90%», о которой молчат короткие посты. Для agent platform перед живыми пользователями этот блок не слабее выбора LLM в values.
LLM, интеграции и масштаб пулов агентов
Values задают не только железо. Default LLM (defaultLlm.model, defaultLlm.apiKey) прописывает модель агентам без своего ключа; под капотом LiteLLM (OpenAI, Anthropic, Mistral, Gemini, local). Префиксы GOOGLE_INTEGRATION_*, MICROSOFT_INTEGRATION_*, SMTP_* тянут интеграции.
Object storage: storage.mode и S3_* выносят bi_store, uploads, artifacts_store, agents_pool с PVC.
otel-collector можно сразу направить на внешний Tempo, Prometheus или Mimir; th2pulse остаётся локальным default. Agent pools на PVC ReadWriteOnce упираются в access mode, если backend больше одной реплики или артефакты общие. На одной реплике для пилота PVC терпим; на S3 имеет смысл переключаться раньше, чем кажется, не только из‑за объёма диска.
Compose «в несколько команд» остаётся для экспериментов. Helm имеет смысл, когда агенты уже перед реальными пользователями.
Источники
- Первоисточник (Dev.to, Anis Meziani): Dev.to (дата доступа: 2026-10-06 UTC)
- Сайт проекта: https://thaink2.com/opensource
- GitHub: https://github.com/apowerb
- Artifact Hub (chart): https://artifacthub.io/packages/helm/apowerb/apowerb-chart
- Документация K8s: https://docs.apowerb.com/deployment/kubernetes
- Docker Hub: https://hub.docker.com/r/apowerb/apowerb