- Alloy 설정 3종: rule 블록을 한 줄 쉼표 나열에서 줄바꿈 속성으로 수정(실측: k8s DaemonSet
CrashLoopBackOff, db-replica alloy.service "expected TERMINATOR, got ,"). alloy fmt로 3종 파싱 확인.
- vm/postgres-common/alloy.sh: apt에 DPkg::Lock::Timeout=600(db-primary에서 unattended-upgrades 잠금으로 100 종료).
- vm/ai-env/compose.yaml: hitl 8081을 127.0.0.1에만 바인딩(agent는 compose 네트워크로 접근).
- workloads/rbac/ai-reader.yaml: nodes get/list/watch ClusterRole 추가(agent get_k8s(nodes) selfcheck 거부 해소).
- vm/harness/image.tag: f30af2a(POST /proposals/{token}/approve·reject 포함 러너).
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).