2.8 KiB
Deployment Kubernetes — Evaluator TIM
O evaluator continua sendo batch/CronJob-only. O componente evaluator-batch não expõe HTTP nem gRPC.
Para acompanhamento operacional existe um componente separado e somente leitura, evaluator-monitor, que consulta as tabelas do Autonomous Database e disponibiliza /ui e APIs de monitoramento. Essa separação mantém o processamento em batch e evita acoplar uma API HTTP ao evaluator.
Recursos aplicados pelo Kustomize:
Namespace
ServiceAccount
ConfigMap
CronJob evaluator-batch
Deployment evaluator-monitor
Service evaluator-monitor (ClusterIP)
O CronJob executa diariamente às 02:00 em America/Sao_Paulo, com suspend: false e concurrencyPolicy: Forbid.
Preparação
cp deploy/env/evaluator.env.example deploy/env/evaluator.env
Configure ADB, OCI GenAI e GCS no env file. Copie deploy/langfuse/langfuse_credentials.example.yaml para deploy/langfuse/langfuse_credentials.yaml e declare ali quantos agentes/projetos Langfuse forem necessários. O script cria o Secret evaluator-langfuse dinamicamente a partir desse arquivo.
Wallet Oracle:
deploy/wallet/
Credencial GCP opcionalmente materializada pelo script:
deploy/gcp/GCP_ACCESS_KEY.json
Secrets
./deploy/scripts/create-secrets.sh dev
./deploy/scripts/create-secrets.sh hml
./deploy/scripts/create-secrets.sh prod
Build
export REGISTRY=tim.azurecr.io
export IMAGE_TAG=0.3.0
./deploy/scripts/build-push.sh prod
Deploy
export REGISTRY=tim.azurecr.io
export IMAGE_TAG=0.3.0
./deploy/scripts/deploy.sh prod
Status
./deploy/scripts/status.sh prod
Ou:
kubectl -n agent-evaluator-prod get cronjob,jobs,pods,deploy,svc
Execução imediata
./deploy/scripts/run-now.sh prod
Acompanhar logs do batch:
kubectl -n agent-evaluator-prod get jobs,pods
kubectl -n agent-evaluator-prod logs -f job/<nome-do-job>
O comando run-agents também imprime o RUN_ID assim que cada execução é criada, permitindo:
python -m evaluator.cli progress <RUN_ID> --events 100
Interface web
O Service do monitor é ClusterIP, portanto não fica exposto externamente por default.
Para acessar via sua máquina:
kubectl -n agent-evaluator-prod port-forward svc/evaluator-monitor 8080:8080
Abra:
http://localhost:8080/ui
Endpoints read-only:
GET /health
GET /api/runs
GET /api/runs/{run_id}
GET /api/runs/{run_id}/results
GET /ui
Não há endpoints para iniciar, cancelar, apagar ou alterar runs.
Configuração de storage
Os buckets por ambiente ficam em configs/judge/storage.yaml. Para usar outro arquivo, configure STORAGE_CONFIG_PATH. JUDGE_GCS_BUCKET sobrescreve o mapping quando necessário.