AI 분석 핫픽스 — ANTHROPIC_API_KEY 401 장애 복구 + 실패 제출 재분석
날짜
영향도보통
Decisions
D1: ANTHROPIC_API_KEY 긴급 교체
- Context: ai-analysis 서비스 Circuit Breaker가 OPEN 상태로 고정. Claude API 직접 호출 시 401
invalid x-api-key확인. Sprint 90에서 보안 목적으로 RABBITMQ_URL 기본값을 ""로 변경한 것과 별개로 API 키 자체가 만료/무효화된 이중 장애. - Choice:
kubectl patch secret ai-analysis-secrets→ base64 인코딩된 신규 키 주입 →rollout restart deploy/ai-analysis-service - Alternatives: Sealed Secrets 도입 후 GitOps 경유 교체 → 긴급 상황에 부적합, 후속 스프린트로 이월
- Code Paths:
infra/k3s/(secret 외부),services/ai-analysis/src/claude_client.py
D2: 실패 제출 4건 DB 초기화 + RabbitMQ 재발행
- Context: 2026-04-15 발생한 AI 분석 실패 제출 4건 (ai_score=0, saga_step=FAILED/AI_QUEUED). Sprint 90 RABBITMQ_URL 빈값 버그 + API 키 무효 이중 원인.
- Choice: DB에서
ai_analysis_status='pending',ai_score=NULL초기화 → ai-analysis pod 내 pika로submission.eventsexchange에 직접 publish → worker 자동 재처리 - Alternatives: submission-service 내부 retry API 호출 → 해당 엔드포인트 미존재
- Code Paths:
services/ai-analysis/src/worker.py(QUEUE, EXCHANGE, ROUTING_KEY 상수 참조)
D3: Sealed Secrets 도입 결정 (Sprint 93 이월)
- Context: API 키 수동 관리의 한계 노출. kubectl edit/patch 방식은 이력 미보존, GitOps 원칙 위반.
- Choice: Sealed Secrets 도입 (ArgoCD GitOps 흐름과 일관, solo-dev 운영 부담 최소)
- Alternatives: GitHub Secrets → Actions sync job (명령형, GitOps 깨짐), External Secrets Operator (OCI ARM에 오버킬)
Patterns
P1: ai-analysis pod 내 pika 직접 publish
- Where:
kubectl exec -n algosu ai-analysis-service-{hash} -- python -c "import pika; ..." - When to Reuse: RabbitMQ 메시지 재발행이 필요하나 rabbitmqadmin CLI 미설치 시. ai-analysis pod에 pika가 이미 설치되어 있으므로 Python one-liner로 publish 가능.
Metrics
- Commits: 0건 (순수 운영 핫픽스), DB 레코드 수정: 4건
- 재분석 결과: 4건 completed (score 72/82/82/72)