Files
gooseek/CONTINUE.md
home 1c1a10eb35
Some checks failed
Build and Deploy GooSeek / build-and-deploy (push) Has been cancelled
fix: resolve WebUI API proxy ECONNREFUSED and configmap placeholder issues
- Fix route handlers to use API_GATEWAY_URL env var with correct K8s fallback
  instead of localhost:3015
- Replace ${} placeholders in configmap.yaml with actual static values to
  prevent kustomize from overwriting envsubst-generated config
- Separate secrets into dedicated secrets.yaml for envsubst processing
- Update deploy.sh to only envsubst secrets (configmap now has static values)

Made-with: Cursor
2026-03-03 04:16:57 +03:00

3.0 KiB
Raw Blame History

Deployment Fixes — Завершено

Что было сделано

Корневые проблемы (найдены и исправлены)

  1. ResourceQuota/LimitRange в неправильном namespace — kustomize перезаписывал namespace с gooseek-sandbox на gooseek, блокируя создание подов (CPU quota exceeded: 26.3/16 cores)
  2. NetworkPolicy sandbox-isolation в gooseek — блокировала DNS (порт 53) для всех подов, вызывая CrashLoopBackOff у thread-svc, learning-svc
  3. Ingress не роутил /api/ на api-gateway* — все API запросы шли на webui (Next.js), возвращая "Service unavailable"
  4. CHAT_SVC_URL отсутствовал в configmap — api-gateway не мог подключиться к chat-svc
  5. Readiness probes /ready для сервисов без этого endpoint — agent-svc, search-svc, scraper-svc всегда 0/1
  6. Rate limiter блокировал health/ready probes — api-gateway падал в CrashLoopBackOff
  7. Secrets содержали ${...} placeholders — envsubst не применялся при деплое

Файлы изменены

  • backend/deploy/k8s/opensandbox-sandbox-ns.yaml — новый (sandbox ресурсы с правильным namespace)
  • backend/deploy/k8s/opensandbox.yaml — убраны sandbox-scoped ресурсы
  • backend/deploy/k8s/deploy.sh — cleanup misplaced ресурсов + sandbox namespace apply
  • backend/deploy/k8s/ingress.yaml — добавлен /api route на api-gateway
  • backend/deploy/k8s/configmap.yaml — добавлены CHAT_SVC_URL, API_GATEWAY_URL
  • backend/deploy/k8s/agent-svc.yaml — readinessProbe /ready -> /health
  • backend/deploy/k8s/search-svc.yaml — readinessProbe /ready -> /health
  • backend/deploy/k8s/scraper-svc.yaml — readinessProbe /ready -> /health
  • backend/cmd/api-gateway/main.go — health/ready endpoints до JWT/rate-limit middleware
  • backend/webui/next.config.mjs — rewrites /api/* -> api-gateway

Ручные действия на сервере (уже выполнены)

  • Удалены ResourceQuota, LimitRange, NetworkPolicy из namespace gooseek
  • Secrets пересозданы с реальными значениями
  • ConfigMap дополнен недостающими TIMEWEB_* переменными
  • Redis flush для сброса rate limit

Сервер

  • IP: 5.187.77.89
  • GPU: RTX 4060 Ti 16GB
  • Site: https://gooseek.ru
  • Chat API: работает (Ollama для free tier)

Важно при следующем деплое

  • deploy.sh использует envsubst для configmap — убедиться что .env содержит все переменные
  • Secrets в configmap.yaml используют ${...} — envsubst должен подставить реальные значения
  • После деплоя проверить что secrets не содержат placeholder'ы