WP-12(실험 설계서 6장) vm/ai-env: apply.sh(시크릿 4종을 Secret Manager에서 파일로, 미등록이면
성능 저하 모드로 기동), compose(agent 8080·hitl 8081·rag-db pgvector 0.8.7-pg16), ai.env(Discord
서버 Selfheal Lab 1557424985793101824, approvals 1557425140302872698, escalation 1557425282363691048,
OPENAI_MODEL gpt-6.1-sol 후보), 프롬프트 3종, 러너북 11종(조치별·토폴로지·3층 절차).
WP-15(실험 설계서 4.1·4.3): apps/alloy.yaml(Alloy Helm 1.13.0 DaemonSet, 클러스터링으로 KSM·Argo CD·
cadvisor 스크랩 분산, demo 등 파드 로그 → Loki), apps/kube-state-metrics.yaml(Helm 8.6.0).
legacy-api compose에 Alloy 사이드카(up{job="legacy-api"}, 컨테이너 로그). DB VM은
vm/postgres-common/alloy.sh로 apt 설치 + prometheus.exporter.postgres(pg_replication_lag_seconds)
+ custom query pg_is_wal_replay_paused + PostgreSQL 로그.
vm/harness/apply.sh: 준비 대기 루프의 curl에 || true(러너 재기동 순간 curl 56으로 중단되던 문제,
2026-10-08 harness-sync 실측).
33 lines
1.1 KiB
YAML
33 lines
1.1 KiB
YAML
# legacy-api on the MIG instance (experiment design 3.2). Image tag is pinned to the apps repo commit.
|
|
# alloy (WP-15, design 4.1): scrapes legacy-api /metrics (up{job="legacy-api"} feeds LegacyUnhealthy) into Mimir and
|
|
# ships the container logs to Loki. Runs as root for the docker socket (log discovery).
|
|
services:
|
|
legacy-api:
|
|
image: asia-northeast1-docker.pkg.dev/cms-d-414903/selfheal/legacy-api:7186ef0
|
|
container_name: legacy-api
|
|
restart: always
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
PORT: "8080"
|
|
DB_DSN: "${DB_DSN}"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/healthz"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 3
|
|
alloy:
|
|
image: grafana/alloy:v1.20.1
|
|
container_name: alloy
|
|
restart: always
|
|
user: "0"
|
|
command: ["run", "--server.http.listen-addr=127.0.0.1:12345", "--storage.path=/var/lib/alloy/data", "/etc/alloy/config.alloy"]
|
|
environment:
|
|
INSTANCE: "${INSTANCE}"
|
|
volumes:
|
|
- ./config.alloy:/etc/alloy/config.alloy:ro
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- alloy-data:/var/lib/alloy/data
|
|
volumes:
|
|
alloy-data: {}
|