Agent Sandbox
쿠버네티스에서 에이전트 실행 환경을 선언형으로 다루는 CRD
kubectl apply -f https://github.com/kubernetes-sigs/agent-sandbox/releases/download/v1.0.1/sandbox-with-extensions.yaml쿠버네티스 SIG Apps 아래에서 만드는 Sandbox 커스텀 리소스와 컨트롤러입니다. 상태를 가지고 오래 도는 단일 컨테이너를 안정된 신원과 영속 저장소로 다루게 해 줍니다. 디플로이먼트의 무상태 복제 모델에도, 스테이트풀셋의 번호 매기기 모델에도 잘 맞지 않는 에이전트 런타임과 강화학습 작업이 대상입니다. 컨테이너 격리 자체는 gVisor 나 Kata 같은 런타임에 맡기고 이쪽은 그 파드의 수명주기를 관리합니다. 확장 모듈로 재사용 템플릿, 미리 데워 둔 풀에서 샌드박스를 받아 가는 클레임, 워밍 풀을 제공합니다.
판단
이럴 때 씁니다
- 에이전트 실행 환경을 쿠버네티스에서 선언형으로 다루고 싶을 때
- 상태와 저장소가 살아남는 단일 컨테이너가 많이 필요할 때
- 강화학습처럼 격리된 작업 공간을 반복해서 찍어 내야 할 때
이럴 땐 쓰지 마세요
- 쿠버네티스 클러스터가 없으면 도입 비용이 큽니다
- 로컬 개발용 샌드박스에는 도커나 마이크로VM 이 가볍습니다
- 격리 자체를 이 프로젝트가 하지 않으므로 런타임을 따로 준비해야 합니다
차별점
- 쿠버네티스 SIG Apps 아래에서 표준 API 를 목표로 만듭니다.
- 디플로이먼트나 스테이트풀셋이 다루지 못하던 단일 상태 워크로드를 정면으로 겨냥합니다.
- 워밍 풀로 샌드박스 준비 시간을 줄이는 확장이 기본 제공됩니다.
워크플로
- 01릴리스에서 확장 포함 매니페스트를 적용합니다.
- 02gVisor 나 Kata 같은 샌드박스 런타임을 RuntimeClass 로 준비합니다.
- 03Sandbox 리소스를 만들어 안정된 신원과 영속 저장소를 가진 파드를 띄웁니다.
- 04반복해 쓸 구성은 SandboxTemplate 으로 뽑아 둡니다.
- 05대기 시간을 줄이려면 SandboxWarmPool 로 미리 데워 두고 SandboxClaim 으로 받아 갑니다.
주요 명령
| 명령 | 설명 |
|---|---|
kubectl apply -f https://github.com/kubernetes-sigs/agent-sandbox/releases/download/v1.0.1/sandbox-with-extensions.yaml | 코어와 확장을 한 번에 설치합니다. |
kubectl kustomize k8s/ | 소스에서 직접 매니페스트를 렌더링합니다. |
kubectl get sandbox | 생성된 샌드박스를 확인합니다. |
함정
설치 전에 확인하세요
- 이 프로젝트는 오케스트레이터입니다. 컨테이너 격리는 gVisor 나 Kata 같은 런타임에 맡기므로 그것을 따로 설치하고 RuntimeClass 로 연결해야 합니다.
- 매니페스트 URL 의 버전 태그를 실제 릴리스 값으로 바꿔야 합니다. 문서 예시는 자리표시자입니다.
- 확장 CRD 를 나눠 설치하면 컨트롤러가 두 번 선언되지 않도록 주의해야 합니다. 확장 포함 단일 자산이 그 충돌을 피해 둔 형태입니다.
비교
샌드박스 서비스를 쓰면 관리할 것이 없지만 클러스터 안으로 들어오지는 않습니다. 이쪽은 쿠버네티스 리소스로 다루므로 기존 배포 파이프라인과 권한 체계를 그대로 씁니다. 대신 클러스터와 격리 런타임을 직접 준비해야 합니다.
최근 변경
v1.0.1 에서 샌드박스 리소스를 다루는 타입스크립트 SDK 가 처음 들어갔습니다. OpenHands 작업 공간 통합이 일급으로 추가됐고 SDK 의 정리 절차와 파드 해석이 단단해졌습니다.