# reddit-intel — promoción de docker compose (n97) a k3s Estado: **INACTIVO**. Los manifiestos de este directorio existen solo en git; el app-of-apps `k8s-manifests` no es recursivo, así que ArgoCD no los sincroniza. La app corre en docker compose en chemavx-n97 (`/opt/reddit-intel`, semana de calibración desde 2026-07-06). ## Checklist de activación (en este orden) 1. **Imagen en el registro.** Primer build manual, o `workflow_dispatch` del workflow "Build reddit-intel image" en el repo `git.chemavx.xyz/chemavx/reddit-intel` (requiere secrets `CI_TOKEN` y `TELEGRAM_BOT_TOKEN` configurados en ese repo). El workflow actualiza el tag de `deployment.yaml` aquí; si el build es manual, sustituir el placeholder `:00000000` a mano por el sha8 real. 2. **Secrets en Infisical** (proyecto "homelab", env `prod`, path `/reddit-intel`) — mismos valores que el `.env` del compose: `reddit-client-id`, `reddit-client-secret`, `llm-api-key`, `dashboard-auth-token`, `telegram-bot-token`, `telegram-chat-id` (los dos de telegram pueden ir vacíos). 3. **Congelar el compose y copiar la BD al PVC:** ```bash # en n97 cd /opt/reddit-intel && docker compose down # para la app (checkpoint WAL limpio) /opt/reddit-intel/scripts/backup.sh # backup final pre-migración # activar la app (crea PVCs y arranca el pod con BD vacía) kubectl apply -f reddit-intel/argocd-app.yaml kubectl -n reddit-intel rollout status deploy/reddit-intel # parar el pod y volcar la BD del host al PVC kubectl -n reddit-intel scale deploy/reddit-intel --replicas=0 kubectl -n reddit-intel run pvc-loader --image=busybox --restart=Never \ --overrides='{"spec":{"nodeSelector":{"kubernetes.io/hostname":"chemavx-n97"},"containers":[{"name":"pvc-loader","image":"busybox","command":["sleep","600"],"volumeMounts":[{"name":"data","mountPath":"/data"}]}],"volumes":[{"name":"data","persistentVolumeClaim":{"claimName":"reddit-intel-data"}}]}}' kubectl -n reddit-intel wait --for=condition=Ready pod/pvc-loader kubectl -n reddit-intel cp /opt/reddit-intel/data/reddit-intel.db pvc-loader:/data/reddit-intel.db kubectl -n reddit-intel delete pod pvc-loader kubectl -n reddit-intel scale deploy/reddit-intel --replicas=1 ``` (El `docker compose down` previo garantiza que no hay `-wal`/`-shm` pendientes: basta copiar el `.db`.) 4. **Verificar:** `kubectl -n reddit-intel logs deploy/reddit-intel` debe mostrar `scheduler_start jobs=monitor,detector,analyzer,karma,learning`; el dashboard responde vía `svc/reddit-intel` (port-forward o el ingress que se decida — pendiente de elegir exposición). 5. **Desmantelar la fase compose:** quitar la línea del crontab de chemavx en n97 (el CronJob `reddit-intel-db-backup` de aquí la reemplaza) y archivar `/opt/reddit-intel` cuando la semana de convivencia confirme que todo va bien. ## Notas - El CronJob de backup (`backup-cronjob.yaml`) replica el patrón researchowl: `sqlite3 .backup` + `integrity_check` + retención 7, contra el PVC. - Un solo replica siempre (`strategy: Recreate`): SQLite WAL + APScheduler in-process no admiten dos pods. - El namespace `reddit-intel` ya existe en el clúster (creado durante la preparación); `CreateNamespace=true` lo cubre igualmente.