Zaroz
Unidades que controla tu código

El emulador local

El emulador es el mismo binario del agente que corre junto a tu unidad en el clúster, arrancado en otro modo. No puede diverger de lo real. Crea el árbol /zaroz, fija el entorno del contrato, ejecuta tu comando, imprime cada señal que recibe y aplica la misma validación.

Ejecuta tu servidor con él

TerminalCode
zaroz-unit-agent emulate --dir ./zaroz --key match-1 --label mode=2v2 \ --user-data roster.json -- ./my-server

Tu proceso ve ZAROZ_DIR=./zaroz, ZAROZ_UNIT_KEY=match-1, ZAROZ_CONTRACT_VERSION=1 y las demás variables del contrato. Lee ./zaroz/unit.json, escribe ./zaroz/signals/ready y el emulador imprime la señal con su hora.

Contrólalo desde otra terminal

TerminalCode
zaroz-unit-agent ctl --dir ./zaroz allocate --user-data match.json # lo que haría allocate zaroz-unit-agent ctl --dir ./zaroz labels mode=2v2 zaroz-unit-agent ctl --dir ./zaroz drain --reason stop # el aviso de drenaje zaroz-unit-agent ctl --dir ./zaroz undrain zaroz-unit-agent ctl --dir ./zaroz release zaroz-unit-agent ctl --dir ./zaroz status

El socket de control (./zaroz/.control.sock) existe solo en el emulador, nunca en un pod real.

En Docker

Code
FROM eclipse-temurin:21-jre COPY --from=<registry>/zaroz-unit-agent:emulate /zaroz-unit-agent /usr/local/bin/ COPY server.jar /srv/server.jar ENTRYPOINT ["zaroz-unit-agent", "emulate", "--dir", "/zaroz", "--key", "dev-1", "--", "java", "-jar", "/srv/server.jar"]
TerminalCode
docker exec <contenedor> /usr/local/bin/zaroz-unit-agent ctl allocate --user-data /roster.json

Los binarios estáticos se construyen para Linux (amd64 y arm64). En Windows usa WSL. Todavía no hay compilación para macOS.

La suite de conformidad

El crate conformance tiene licencia MIT. Arranca una unidad y comprueba el contrato de punta a punta: archivos presentes antes de empezar, señales reflejadas, asignación entregada y confirmada, el aviso de drenaje antes de SIGTERM y cada archivo contra su JSON Schema. Los mismos identificadores de aserción se ejecutan contra el emulador en tu CI y contra una unidad real en la plataforma, así que una unidad que pasa en local se comporta igual en el clúster.

La imagen y los binarios del emulador se publicarán en la organización zaroz-oss con el lanzamiento (allí se anunciará el nombre exacto de la imagen; <registry> arriba lo representa). El código del agente es privado; los esquemas del contrato, el emulador, la suite de conformidad, el helper y los ejemplos son públicos.

Last modified on