Rediseñar auth a login de suscripción y corregir bugs de la prueba e2e
Auth: ANTHROPIC_API_KEY_FILE queda vacío por defecto — claude -p usa el login de suscripción ya activo (~/.claude/.credentials.json) en vez de una API key root-only. Se descartó ese diseño en vivo al confirmar que no había API key real disponible; además elimina la necesidad de crear secretos root-only vía sudo. Consecuencia: el futuro servicio systemd debe correr como devops, no root. CLAUDE_BIN/KUBECTL_BIN se agregan por ruta absoluta (ninguno está en el PATH de root/systemd). Bugs encontrados y corregidos durante la prueba end-to-end contra el cluster real (deployment canario desechable): - execute_corrective_action se invocaba en un subshell ($()), perdiendo sus variables de resultado (LAST_ACTION_*) -> crash "unbound variable". Ahora usa el exit status de la función, invocada directo. - DRY_RUN marcaba blocked=true en state.json como si la acción hubiera sido real, contaminando una corrida real posterior sobre el mismo recurso. Ahora el estado solo se actualiza fuera de DRY_RUN. También: GITEA_TOKEN_FILE pasa a /DATA (dueño devops, sin sudo), y media.cruzcloud.net se excluye de PUBLIC_DOMAINS (uso personal, no es parte del lab). Prueba e2e completa documentada en apps-registry: docs/arquitectura/agente-monitoreo.md.
This commit is contained in:
1 parent
5c1cb3aa5e
commit
ad53cff1e7
3 files changed
+104
-70
No files matched your search
@@ -1,11 +1,17 @@
|
||||
# Copia este archivo a lab-agent.env (sin .example) y ajusta valores.
|
||||
# lab-agent.env NO debe contener secretos — API keys y tokens van en
|
||||
# archivos aparte, root-only (ver ANTHROPIC_API_KEY_FILE / GITEA_TOKEN_FILE).
|
||||
# lab-agent.env NO debe contener secretos — lo único sensible es el token
|
||||
# de Gitea Actions, que va en un archivo aparte (ver GITEA_TOKEN_FILE).
|
||||
|
||||
# --- Alcance kubectl ---
|
||||
NAMESPACE=ecommerce
|
||||
KUBECONFIG_PATH=/DATA/.kube/config
|
||||
|
||||
# claude y kubectl viven bajo el HOME de devops, no en un PATH estándar de
|
||||
# root/systemd (confirmado en vivo 2026-08-26: `sudo which claude` no lo
|
||||
# encuentra). Rutas absolutas, no confiar en PATH.
|
||||
CLAUDE_BIN=/DATA/AppData/home-devops/.local/bin/claude
|
||||
KUBECTL_BIN=/DATA/AppData/home-devops/.local/bin/kubectl
|
||||
|
||||
# --- Umbrales (lista blanca aprobada 2026-08-25) ---
|
||||
UNHEALTHY_THRESHOLD_MIN=10
|
||||
RATE_LIMIT_MIN=30
|
||||
@@ -32,15 +38,25 @@ DOCKER_RESTART_ALLOWLIST=gitea-runner
|
||||
GITEA_ACTIONS_REPOS="devops/apps-registry"
|
||||
|
||||
# --- Endpoints públicos a chequear (solo diagnóstico, no gatillan acciones) ---
|
||||
PUBLIC_DOMAINS="shop.cruzcloud.net commerce.cruzcloud.net media.cruzcloud.net gitea.cruzcloud.net docs.cruzcloud.net"
|
||||
# media.cruzcloud.net excluido a propósito: no es parte del lab, es uso
|
||||
# personal aparte (confirmado 2026-08-26).
|
||||
PUBLIC_DOMAINS="shop.cruzcloud.net commerce.cruzcloud.net gitea.cruzcloud.net docs.cruzcloud.net"
|
||||
|
||||
# --- Rutas de estado/logs (escribibles por devops, NO root-only) ---
|
||||
STATE_FILE=/DATA/AppData/k3d-lab/lab-agent/state.json
|
||||
LOG_DIR=/DATA/AppData/k3d-lab/lab-agent/logs
|
||||
|
||||
# --- Secretos root-only (archivos, NO valores — ver README.md) ---
|
||||
ANTHROPIC_API_KEY_FILE=/etc/claude-lab-agent/secrets/anthropic_api_key
|
||||
GITEA_TOKEN_FILE=/etc/claude-lab-agent/secrets/gitea_token
|
||||
# --- Autenticación de claude -p ---
|
||||
# Vacío (default): usa el login de suscripción ya activo para el usuario
|
||||
# que corre el script (~/.claude/.credentials.json) — por eso el servicio
|
||||
# systemd del Paso 4 corre como `devops`, no como root: root no tiene ese
|
||||
# login. Solo completar esta ruta si en algún momento se prefiere
|
||||
# autenticar con una API key real en vez del login de suscripción.
|
||||
ANTHROPIC_API_KEY_FILE=
|
||||
|
||||
# Token de Gitea Actions (opcional, scope read:repository). Dueño devops,
|
||||
# 600 — ya no root-only, no hace falta sudo para crearlo.
|
||||
GITEA_TOKEN_FILE=/DATA/AppData/k3d-lab/lab-agent/secrets/gitea_token
|
||||
|
||||
# --- Modelo e invocación de Claude Code headless ---
|
||||
CLAUDE_MODEL=claude-sonnet-5
|
||||
|
||||
Reference in new issue
Block a user