Sobre o projeto
O Agent Sandbox é um projeto no estilo operador do Kubernetes que define uma Custom Resource Definition `Sandbox` e um controlador para cargas de trabalho que precisam de um ambiente isolado, de longa duração e de contêiner único, com identidade estável e armazenamento persistente. Ele foi projetado para ficar entre os Deployments do Kubernetes, que visam pods replicados sem estado, e os StatefulSets, que fornecem réplicas numeradas em vez de uma abstração dedicada de sandbox singleton.
O recurso central `Sandbox` gerencia um pod com estado. As capacidades documentadas incluem um hostname e identidade de rede estáveis, armazenamento persistente que pode sobreviver a reinicializações e operações de ciclo de vida gerenciadas pelo controlador, como criação, exclusão agendada, pausa e retomada. Os usuários definem o pod por meio de um template de pod e podem acessar o sandbox resultante por meio de seu hostname estável.
O projeto é explicitamente um orquestrador de sandbox, e não um runtime de isolamento de contêiner. Ele configura Pods do Kubernetes para usar runtimes de sandbox seguros por meio de `RuntimeClass`, delegando o isolamento de kernel e rede de baixo nível a projetos como gVisor ou Kata Containers. Isso o torna adequado para cenários multilocatário ou de código não confiável quando combinado com um runtime apropriado, deixando a fronteira de segurança para o runtime selecionado e a configuração do Kubernetes.
Um módulo de extensões opcional adiciona APIs de nível superior:
- `SandboxTemplate` define configurações reutilizáveis para sandboxes semelhantes.
- `SandboxClaim` solicita um sandbox, potencialmente de um warm pool, sem expor todos os detalhes de configuração subjacentes.
- `SandboxWarmPool` mantém sandboxes pré-aquecidos para alocação mais rápida.
A arquitetura segue o padrão de controlador do Kubernetes: os usuários criam recursos personalizados Sandbox, Claim, Template ou WarmPool, e os controladores reconciliam esses objetos em Pods e outros recursos do Kubernetes. Um diagrama de arquitetura no README mostra claims adotando sandboxes de warm pools e warm pools referenciando templates.
A instalação é fornecida como manifestos de release aplicados com `kubectl`. Um manifesto padrão instala componentes centrais e de extensão, enquanto manifestos separados permitem instalação somente do núcleo e extensões opcionais. O README também documenta a renderização de manifestos a partir do código-fonte com Kustomize, um Helm chart, comandos de verificação para CRDs e implantação do controlador, e etapas de desinstalação. Ele alerta que a exclusão de CRDs propaga a exclusão de seus recursos personalizados.
O acesso programático é suportado por SDKs Go e Python. O SDK Go é instalado com `go get sigs.k8s.io/agent-sandbox/clients/go/sandbox`, e o SDK Python é publicado como `k8s-agent-sandbox`. Um Sandbox Router opcional é um proxy reverso HTTP que pode rotear tráfego de SDKs ou clientes externos para pods de sandbox, incluindo ambientes onde o encaminhamento direto de portas do pod não está disponível.
Os casos de uso documentados incluem runtimes isolados de agentes de IA executando código gerado por LLM, loops de aprendizado por reforço e avaliação, como cargas de trabalho SWE-bench ou R2E-Gym, ambientes persistentes de desenvolvedor, sessões de notebook no estilo Jupyter, ferramentas de pesquisa e pequenos serviços com estado de pod único. As características desejadas de longo prazo incluem hibernação profunda, retomada automática na conexão de rede, armazenamento elástico eficiente, compartilhamento de memória assistido por runtime quando suportado, identidade e conectividade mais ricas, e consumo programático por aplicações e agentes.
O projeto é desenvolvido sob o Kubernetes SIG Apps e é licenciado sob Apache-2.0. A documentação de configuração avançada aborda ajuste de escala e concorrência, como QPS da API e número de workers, e um modelo de ameaças separado descreve fronteiras de segurança e mitigações.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.