App corre en docker compose en n97 (semana de calibración). El app-of-apps no es recursivo: nada de este directorio se sincroniza hasta aplicar a mano argocd-app.yaml. Checklist de activación en PROMOTION.md (imagen construida, secrets en Infisical /reddit-intel, copia de la BD al PVC). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.3 KiB
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)
-
Imagen en el registro. Primer build manual, o
workflow_dispatchdel workflow "Build reddit-intel image" en el repogit.chemavx.xyz/chemavx/reddit-intel(requiere secretsCI_TOKENyTELEGRAM_BOT_TOKENconfigurados en ese repo). El workflow actualiza el tag dedeployment.yamlaquí; si el build es manual, sustituir el placeholder:00000000a mano por el sha8 real. -
Secrets en Infisical (proyecto "homelab", env
prod, path/reddit-intel) — mismos valores que el.envdel 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). -
Congelar el compose y copiar la BD al PVC:
# 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 downprevio garantiza que no hay-wal/-shmpendientes: basta copiar el.db.) -
Verificar:
kubectl -n reddit-intel logs deploy/reddit-inteldebe mostrarscheduler_start jobs=monitor,detector,analyzer,karma,learning; el dashboard responde víasvc/reddit-intel(port-forward o el ingress que se decida — pendiente de elegir exposición). -
Desmantelar la fase compose: quitar la línea del crontab de chemavx en n97 (el CronJob
reddit-intel-db-backupde aquí la reemplaza) y archivar/opt/reddit-intelcuando 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-intelya existe en el clúster (creado durante la preparación);CreateNamespace=truelo cubre igualmente.