핵심 요약
AWS가 에이블리의 Amazon EKS 기반 Agent Sandbox 운영 사례를 분석하고, 작업환경의 수명 주기 관리와 격리 운영 구현 방법을 정리했습니다.
구현 방법
- Agent Sandbox 컨트롤러로 Sandbox를 생성하고, 전용 Karpenter NodePool에 작업 Pod를 배치
- Kyverno를 통한 Service 및 Istio 접속 리소스 자동 생성, ExternalDNS를 통한 Route 53 반영
- Sandbox 스펙 정의: apiVersion: agents.x-k8s.io/v1beta1, kind: Sandbox, 운영모드(Running/Suspended), shutdownPolicy 및 shutdownTime 설정
- podTemplate에 실행 도구와 프리뷰 환경, 자원 요청/상한 포함, karpenter.sh/do-not-disrupt 어노테이션으로 중단 시점 보호
- 실행 상태 변경은 Kubernetes CustomObjectsApi를 활용한 Sandbox 상태 Patch로 관리
- 작업 코드는 S3에 보관하고, 프로젝트 식별자와 대화 정보는 애플리케이션이 관리
- 재개/중단 흐름: Running에서 유휴 판단 시 Suspended로 전환, 재개 시 애플리케이션 판단에 따라 새 Pod 준비 및 코드 복원
- 노드 관리: 전용 Karpenter NodePool 및 Disruption Budget으로 빈 노드 회수와 실행 중인 명령의 안전한 중단을 조합
- 엔드포인트 관리 자동화를 위한 ACM/와일드카드 인증과 로드밸런서 설정 최소화( Kyverno 생성 규칙 및 연결 리소스 활용)
주요 결과
- 수명 주기 관리로 필요한 자원만 활성화하고 비활성 환경은 회수하여 운영 효율성 향상
- 애플리케이션은 유휴 판단과 결과물 보존을 담당하고, Agent Sandbox는 Pod 중단/재개를, Karpenter는 노드 회수를 각각 관리하는 책임 분리로 운영 안정성 강화
- Kyverno, ExternalDNS, Route 53, Istio 연계로 엔드포인트 관리의 자동화 및 일관성 확보



