- SLA-Bench Shooter โ Guardian Latency SLA (Air-Gap Bundle)
SLA-Bench Shooter โ Guardian Latency SLA (Air-Gap Bundle)
์์ด๊ฐญ(์ธํฐ๋ท ์ฐจ๋จ) K3S ํ๊ฒฝ์ ๋ฐ์ ํด์ ์ฐ๋, ๋ฐฐํฌ๋ Guardian API ์ ์ง์ฐ(latency) SLA ์ธก์ ๋๊ตฌ๋ค. ์น UI ์ ์๋ํฌ์ธํธ์ API ํค๋ง ๋ฃ์ผ๋ฉด ๋ฐ๋ก ์ธก์ ์ด ์์๋๋ค โ ๋ฐ์ดํฐ ์์ฑ๋, ๋ชจ๋ธ ๋ค์ด๋ก๋๋, ์ธํฐ๋ท ์ ์๋ ํ์ ์๋ค.
| ๊ฐ | |
|---|---|
| ํ์ ํ๊ฒฝ | k3s (๋๋ ์์์ k8s), local-path storageClass, RAM ~2Gi, CPU ~2 |
| GPU | ๋ถํ์ โ ๋ชจ๋ธ์ ๋์ฐ์ง ์๋๋ค. ๋จ์ด ์ด์ํ๋ Guardian ์ ๋ฐ์์ ํธ์ถํ๋ ํด๋ผ์ด์ธํธ๋ค |
| ์ธ๋ถ ํฌํธ | 30001/tcp (NodePort) |
| ์ธํฐ๋ท | ์ค์นยท๊ตฌ๋ ๋ชจ๋ ๋ถํ์ |
| ๋ฐ์ดํฐ์ | ์ด๋ฏธ์ง์ ๋ด์ฅ (200 / 1,000 / 5,000 ํ ํฐ ร 6์ข , 12,000 ํ๋กฌํํธ) |
๐ ์ ์ฅ์ ๊ตฌ์ฑ
๋ ธ๋ ์ข ๋ฅ์ ๋ง๋ zip ํ๋๋ง ๋ฐ์ผ๋ฉด ๋๋ค. ์ด๋ฏธ์ง tar ์ ๋งค๋ํ์คํธ๋ ๋ zip ์ด ์์ ํ ๋์ผํ๊ณ , ๋ค๋ฅธ ๊ฒ์ ์ค์น ์ ์ฐจ ๋ฌธ์์ ๋ณ์ข ํ์๋ฟ์ด๋ค.
| ํ์ผ | ํฌ๊ธฐ | ์ด๋ ๋ ธ๋์ |
|---|---|---|
sla-shooter-2026.08.11-k3s-airgapped.zip |
~102MB | control-plane (k3s server) โ ํ ๋ฒ์ ์ค์น |
sla-shooter-2026.08.11-k3s-agent-airgapped.zip |
~102MB | k3s-agent (์์ปค) โ ๋ ๋จ๊ณ ์ค์น |
SHA256SUMS.txt |
โ | ๋ฌด๊ฒฐ์ฑ ์ฒดํฌ์ฌ |
sha256sum -c SHA256SUMS.txt
๐ ์ค์น
์ค์น๋ ๋ ๋จ๊ณ์ด๊ณ , ์๋ก ๋ค๋ฅธ ๋ ธ๋๋ฅผ ์๊ตฌํ ์ ์๋ค:
| ๋ฌด์ | ์ด๋์ | ์ | |
|---|---|---|---|
| โ | ์ด๋ฏธ์ง import | shooter ๋ฅผ ๋๋ฆด ๊ทธ ๋ ธ๋ | k3s ctr ๋ ์๊ธฐ ๋
ธ๋์ containerd ์๋ง ๋ฃ๊ณ , ๋งค๋ํ์คํธ๋ imagePullPolicy: Never ๋ค |
| โก | ๋งค๋ํ์คํธ ์ ์ฉ | ํด๋ฌ์คํฐ API ์ ๋ฟ๋ ๊ณณ | k3s-agent(์์ปค) ๋
ธ๋์๋ kubeconfig ๊ฐ ์์ด k3s kubectl ์ด ๋์ํ์ง ์๋๋ค |
โ control-plane(k3s server) ๋ ธ๋์ ์ค์น โ ํ ๋ฒ์
unzip sla-shooter-2026.08.11-k3s-airgapped.zip
cd sla-shooter
sudo ./install.sh
โก k3s-agent(์์ปค) ๋ ธ๋์ ์ค์น โ ๋ ๋จ๊ณ โญ
# โ -a ์์ปค ๋
ธ๋์์
unzip sla-shooter-2026.08.11-k3s-agent-airgapped.zip
cd sla-shooter
sudo ./install.sh # ์ด๋ฏธ์ง import ํ, ๋จ์ ๋ช
๋ น์ ๋
ธ๋ ์ด๋ฆ๊ณผ ํจ๊ป ์ถ๋ ฅํ๋ค
# โ -b control-plane ๋
ธ๋์์ (๊ฐ์ zip ์ ๋๊ณ )
NODE_NAME=<์์ปค ๋
ธ๋ ์ด๋ฆ> sudo ./scripts/deploy.sh
๊ฐ zip ์์ QUICKSTART.md ์ ๊ทธ ๋ณ์ข
์ ์ ์ฐจ๋ง ์ ํ ์๋ค. install.sh ๋ ์ด๋
zip ์ด๋ ์ค์ ๋
ธ๋ ์ข
๋ฅ๋ฅผ ์ค์ค๋ก ๊ฐ์งํด ๋ง๊ฒ ๋์ํ๊ณ , zip ๋ณ์ข
๊ณผ ๋
ธ๋๊ฐ ๋ค๋ฅด๋ฉด ๊ทธ
์ฌ์ค์ ์๋ ค์ค๋ค โ ์๋ชป๋ zip ์ ํ์ด๋ ์๋ชป ์ค์น๋์ง๋ ์๋๋ค.
install.sh ๋ agent ๋
ธ๋์์ ์ค์ค๋ก ๊ฐ์งํด์ โก ๋ฅผ ๊ฑด๋๋ฐ๊ณ ์๋ด๋ง ํ๋ค.
kubeconfig ๋ฅผ ์์ปค๋ก ๊ฐ์ ธ์ค๋ฉด ํ ๋ฒ์ ๋๋ผ ์๋ ์๋ค:
KUBECONFIG=/root/k3s.yaml sudo -E ./install.sh
๋
ธ๋ ๊ณ ์ ์ด ํ์๋ค. ์ด๋ฏธ์ง๋ import ํ ๋
ธ๋์๋ง ์์ผ๋ฏ๋ก Deployment ์
nodeSelector ๊ฐ ๊ฑธ๋ ค ์๊ณ , ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ๊ทธ ๋
ธ๋์ ๋ผ๋ฒจ
(sla-bench.starfort.io/shooter=true)์ ๋ถ์ธ๋ค. ๊ณ ์ ํ์ง ์์ผ๋ฉด ํ๋๊ฐ ์ด๋ฏธ์ง ์๋
๋
ธ๋๋ก ์ค์ผ์ค๋์ด ErrImageNeverPull ๋ก ์ฃฝ๋๋ค. ๊ฒฐ๊ณผ PVC(local-path)๋ ๋
ธ๋
๋ก์ปฌ์ด๋ผ ๊ณ ์ ์ ๊ฒฐ๊ณผ ๋ณด์กด์๋ ํ์ํ๋ค.
์ ์์ NodePort 30001 โ ํ๋๊ฐ ์ด๋ ๋
ธ๋์ ์๋ ์๋ฌด ๋
ธ๋ IP ๋ก ๋ค์ด๊ฐ ์ ์๋ค:
http://<any-node-ip>:30001/. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅธ ํธ์คํธ๋ฉด ๋ฐฉํ๋ฒฝ/๋ณด์๊ทธ๋ฃน์์
30001/tcp ๋ฅผ ์ด์ด์ผ ํ๋ค.
โ 30001 ์ ์ฌ๋ด OpenAI-adapter(Portico) ๋ฒ๋ค์ด ์ฐ๋ ๋ฒ์(30001โ30100)์ ๊ฒน์น๋ค. ํ ํด๋ฌ์คํฐ์ ๋ ๋ค ์ฌ๋ฆฌ๋ ค๋ฉด ํ์ชฝ
nodePort๋ฅผ ์ฎ๊ฒจ์ผ ํ๋ค (k8s/30-service.yaml).
๐ ์ธ๋ถ Guardian ํธ์ถ (์์๋ฐ์ด๋)
์ธก์ ๋์์ด ์ธ๋ถ ์ธ์คํด์ค์ Starfort Guardian API ๋ผ๋ฉด, "์์ด๊ฐญ"์ ์ค์น์ ์ธํฐ๋ท์ด ํ์ ์๋ค๋ ๋ป์ด๊ณ ์ธก์ ์ ๋น์ฐํ ๊ทธ ๋์์ ๋ฟ์์ผ ํ๋ค. ํ๋์์ ํ์ธ:
sudo k3s kubectl -n sla-bench exec deploy/sla-shooter -- \
python -c "import socket;print(socket.gethostbyname('<guardian-host>'))"
์ด๋ฆ์ด ์ ํ๋ฆฌ๋ฉด coredns ๋ ์ฌ๋ด DNS ๋ฌธ์ ๋ค(๊ธํ๋ฉด Base URL ์ IP ๋ฅผ ์ง์ ๋ฃ๊ณ
Verify TLS ๋ฅผ ๋๋ค). UI ์ Test connection ์ด ์ด ์ ๋ถ๋ฅผ ํ ๋ฒ์ ํ์ธํด ์ค๋ค.
๐ ์ธก์ โ ์๋ํฌ์ธํธ์ ํค๋ง
Target โ Base URL ๊ณผ API key ์ ๋ ฅ. ๋ฐฐํฌ์ฒ๊ฐ ์ค curl ์ ์ ์ฒด URL ์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ด๋ ๋๋ค (
/v1/guard/api๊ฐ ๋ถ์ด ์์ผ๋ฉด ์์์ ๋ผ์ด๋ธ๋ค).Test connection โ ๋ฟ๋์ง ยท ํค๊ฐ ๋จน๋์ง ยท ์๋ต ๋ชจ์์ ์ฝ์ ์ ์๋์ง ํ์ธ.
Datasets โ ์ด๋ฏธ์ง์ ์ด๋ฏธ ๋ค์ด ์๋ค. ์์ฑ ๋จ๊ณ ์์:
๋ฐ์ดํฐ์ ํ๋กฌํํธ ํ ํฐ ๋ฌด์์ ์ฌ๋๊ฐ pii-phone-200/-1K/-5K3,000 / 2,000 / 1,000 200 / 1,000 / 5,000 ํ์ง๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒฝ๋ก(๊ฒ์ดํธ+์ถ์ถ)์ ์ง์ฐ no-pii-200/-1K/-5K3,000 / 2,000 / 1,000 200 / 1,000 / 5,000 ํ์ง๊ฐ ๊ฑธ๋ฆฌ์ง ์๋ ๊ฒฝ๋ก โ ๊ทธ ๊ธธ์ด์ ๋ฐ๋ฅ๊ฐ ๊ฐ์ ํ ํฐ ๊ธธ์ด๋ก ๋์ ์ง์ง์ด ๋๋ฆฌ๋ฉด, ๋ P95 ์ ์ฐจ์ด๊ฐ ๊ณง ํ์ง ์์ ์ ๋น์ฉ์ด๋ค.
Start run โ ๋์ ์ฌ์ฉ์๋ฅผ
1 โ 4 โ 8 โ 16 โ 32๋ก ์ฌ๋ฆฌ๋ฉฐ ์ฐ๋ค.Results โ ๋ฆฌํฌํธ๋ฅผ ๋ณด๊ณ
.zip(๋ฆฌํฌํธ + config + ์คํ ์ด์ง๋ณ CSV ์ ๋) ๋ค์ด๋ก๋.
๋ฆฌํฌํธ๋ ์ง์ฐ๋ง ๋ค๋ฃฌ๋ค: ๋ฐ์ดํฐ์ ๋ณ baseline P95 ยท SLA ํ๋ ยท ํ๋ก ํฐ์ด(P95 ๊ฐ ํ๋ ์์ ๋จธ๋ฌธ ์ต๋ ๋์์ฑ) ยท ์คํ ์ด์ง๋ณ P50/P95/รu1/P99/max ยท ์ค๋ฅ์จ ยท ์ฒ๋ฆฌ๋ ์์ ๋.
โฑ ์ธก์ ์์ฒญ์๋ ํ์์์์ด ์๋ค
Guardian ์ด 3๋ถ์ ์ฐ๋ฉด 3๋ถ์ผ๋ก ๊ธฐ๋ก๋๋ค. ๋๋ฆฐ ์๋ต์ ์๋ผ ์คํจ๋ก ์ธ๋ฉด P95 ๊ฐ "์ด์๋จ์ ์์ฒญ๋ง์ ํต๊ณ"๊ฐ ๋์ด, ์ ์ SLA ๋ฅผ ๋ชป ์งํค๋ ๊ตฌ๊ฐ์ด ๊ฐ์ฅ ๋นจ๋ผ ๋ณด์ด๋ ์ญ์ค์ด ์๊ธด๋ค.
| ๋ฌด์ | ๊ธฐ๋ณธ๊ฐ |
|---|---|
| ์ธก์ ์์ฒญ | ๋ฌด์ ํ (LOCUST_TIMEOUT_S=<์ด> ๋ก๋ง ๊ตณ์ด ์ํ์ ๊ฑธ ์ ์๋ค) |
| ์คํ ์ด์ง ์ข ๋ฃ ํ ๋๋ ์ธ | max(60s, P95ํ๋ร6) ยท u1 ๊ตฌ๊ฐ 300s โ ์ฐฝ์ด ๋ซํ๋ ์งํ ์ค ์์ฒญ์ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค ๊ธฐ๋กํ๋ค |
| Test connection / sanity check | connect 10s + read 600/300s (0 = ๋ฌด์ ํ) |
| ๋ธ๋ผ์ฐ์ โ shooter | ์์ โ ๋ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋, ํญ์ ๋ซ์๋ ๊ณ์๋๋ค |
๐ ๋ณด์
- API ํค๋ ๋์คํฌ์ ์ฐ์ด์ง ์๋๋ค. ๊ทธ ๋ฐ์ ํ๋ก์ธ์ค ํ๊ฒฝ์๋ง ์๊ณ , ๋ชจ๋ ์ฐ์ถ๋ฌผ
(
config.jsonยท๋ฆฌํฌํธ)์๋sf_aโฆ15 (67 chars)์ฒ๋ผ ๋ง์คํน๋ ํํ๋ก๋ง ๋จ๋๋ค. - UI ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ์ด ์๋ค(์ฌ๋ด๋ง ์ ์ ). ํ ํฐ์ ๊ฑธ๋ ค๋ฉด zip ์
secret.example.yaml์ ์ฐธ๊ณ ํด Secret ์ ๋ง๋ค๊ณk8s/20-deployment.yaml์SHOOTER_TOKEN์ฃผ์์ ํผ๋ค. ๋ณด๊ธฐ ์ ์ฉ์SHOOTER_READONLY=1. - ๋ฐ์ ํ ๋ฒ์ ํ๋. ๋ ๋ฐ์ด ๊ฐ์ ๋ฐฐํฌ๋ฅผ ๋์์ ๋๋ฆฌ๋ฉด ์๋ก์ ๋ถํ๋ฅผ ์๊ธฐ ๋์์ฑ์ธ ์ค ์๊ณ ์ฌ๊ฒ ๋๋ค โ ์ค์ผ์ผ๋ง ๋๋ฝ์ด ์๋๋ผ ์ธก์ ์ ํฉ์ฑ์ด๋ค.
๐งฐ ์ ๋ฐ์ดํธ / ์ ๊ฑฐ / ๊ฒฐ๊ณผ ๋ฐ์ถ
sudo ./scripts/update.sh # ์ zip ์ ํ๊ณ ์คํ โ ๊ฒฐ๊ณผ PVC ๋ณด์กด
sudo ./scripts/uninstall.sh # ์ฑ๋ง ์ ๊ฑฐ, ๊ฒฐ๊ณผ๋ ๋จ๊น
KEEP_RESULTS=0 sudo ./scripts/uninstall.sh # ๊ฒฐ๊ณผยท๋ค์์คํ์ด์ค๊น์ง ์ ๊ฑฐ
./scripts/results.sh # ๋ธ๋ผ์ฐ์ ์์ด ๊ฒฐ๊ณผ๋ฅผ tar ๋ก ๊บผ๋ด๊ธฐ
๐ฉบ ์์ฃผ ๊ฑธ๋ฆฌ๋ ๊ฒ
| ์ฆ์ | ์กฐ์น |
|---|---|
ํ๋๊ฐ ImagePullBackOff |
์ด๋ฏธ์ง import ๋ฅผ ๊ฑด๋๋ด ๊ฒ. imagePullPolicy: Never ๋ ์๋์ ์ด๋ค โ ๋น๊ธธ ๋ ์ง์คํธ๋ฆฌ๊ฐ ์๋ค |
PVC ๊ฐ Pending |
local-path storageClass ๊ฐ ์๋ค. k3s kubectl get sc ๋ก ํ์ธ ํ k8s/10-pvc.yaml ์์ |
kube-system ํ๋๊น์ง ์ ๋ถ ContainerCreating + blob not found |
๋
ธ๋์ containerd ์ฝํ
์ธ ์ ์ฅ์๊ฐ ๊นจ์ง ๊ฒ. sudo systemctl stop k3s && sudo rm -rf /var/lib/rancher/k3s/agent/containerd && sudo systemctl start k3s ํ ์ฌ์ค์น |
| Test connection ์ด read timeout | ๋ฐฐํฌ๊ฐ ๊ทธ๋งํผ ๋๋ฆฐ ๊ฒ. ์ธก์ ์์ฒญ์ ํ์์์์ด ์์ผ๋ ์ค์ธก์ ๊ฐ๋ฅํ๋ค. PROBE_READ_TIMEOUT_S ๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋๋ค |
์์ธํ ๋ฐ๋ถ์ zip ์์ INSTALL.md (์ค์น ยท ๋ฐฉํ๋ฒฝ ยท ์ธก์ ยท ํ์์์ ยท ๋ฌธ์ ํด๊ฒฐ ยท
์
๋ฐ์ดํธ/์ ๊ฑฐ ยท ์ฌ๋น๋).
๐ ์ฌ๋น๋
guardian-benchmark ๋ ํฌ์์ ํ ์ค:
./shooter/build.sh --bundle
# โ shooter/dist/sla-shooter-2026.08.11-{k3s,k3s-agent}-airgapped.zip + SHA256SUMS.txt
๋ฐ์ดํฐ์ ์์ฑ๋ง HuggingFace ํ ํฌ๋์ด์ ๋ฅผ ๋ฐ์์ผ ํ๋ฏ๋ก ๋คํธ์ํฌ๊ฐ ๋๋ ์ชฝ์์ ๋น๋ํ๋ค(seed 42 ๊ณ ์ โ ์ด๋ ๋จธ์ ์์ ๋ง๋ค์ด๋ ๊ฐ์ ํ์ผ). ๊ทธ๋์ ์ด๋ฏธ์ง์ ๊ตฌ์ ๋๊ธด๋ค.