Files
selfheal-lab-gitops/vm/harness
seon 26061a474b chore: ai image b0ff118 (external responder), harness ed3d41d (26 min diagnose for external-*)
external-* 모델 참고 측정용. ai-agent 는 EXTERNAL_ADDR=:8090 리스너를 켜되 호스트의
127.0.0.1:8090 에만 매핑해 IAP SSH 터널로만 닿게 한다(응답이 곧 진단이므로 VPC 노출 금지).
ai.env 에 진단·턴 대기 시간(1500/1200초)을 명시. 하네스는 external- 모델의 /diagnose 를
26분 기다린다. VM 반영(make ai-sync / harness-sync)은 진행 중인 m1·Fable 배치가 끝난 뒤.
2026-10-16 09:10:07 +09:00
..

vm/harness

Harness VM (10.20.0.11) of the self-healing lab: experiment design 5 (runner, measure DB, blackbox, k6) plus Alloy.

file purpose
apply.sh boot / make vm-sync entry: secrets from Secret Manager to /opt/selfheal/harness/secrets, env file, compose up
compose.yaml runner (8080), measure-db, blackbox (9115), alloy (12345), k6 (profile campaign)
image.tag runner image tag (selfheal-public/harness:<sha> built from selfheal-lab-apps/harness)
scenarios/*.yaml the 12 scenarios of design 7, loaded by the runner at start
config.alloy blackbox + runner scrape -> Mimir remote_write
blackbox.yaml http_2xx (ALB /api/orders, label target=alb) and tcp_connect (target=db-primary)
k6/load.js background load 20 rps (design 5.5)

Runner API (design 5.2):

endpoint use
GET /selfcheck measure DB, k8s (chaos-mesh pods), AWS OIDC caller identity, GCP instances, Mimir probe, ALB
POST /runs {"campaign","scenario_ids":[...],"baseline_s","cooldown_s","observe_timeout_s","min_observe_s","drift_before"} start a run (one at a time)
GET /runs, GET /runs/{id}, POST /runs/{id}/abort, POST /runs/{id}/finish {"drift_after"} inspect / stop / close
POST /hooks/alert Grafana contact point
POST /proposals AI VM registers a layer-2 proposal; returns the approval token
POST /actions/execute {"action_id","target","token"} catalogue action with a human token or an approved proposal token
GET /actions/catalog, GET /scenarios, GET /metrics reference

Campaign load: docker compose --env-file /opt/selfheal/harness.env --profile campaign up -d k6 (stop: ... stop k6; exit code and /logs/summary.json in the k6-logs volume).