Развёртывание
Сборка. oxl build собирает пакет или файл; профиль выбирает уровень оптимизации и отладочной информации:
dev (без оптимизаций, полная отладочная информация, контракты и трассы включены), test и prod (opt = 3, таблица строк
вместо полной отладочной информации, контракты и трассы выключены). Профили настраиваются в [profile.prod] файла oxl.toml
(III.2).
oxl build --profile prod --image registry.local/shop:0.3.0 пишет образ без Docker: программа, её динамические библиотеки и
корневые сертификаты в формате OCI (--image oci:<dir>[:tag] — каталог слоёв, --image name[:tag] — архив
build/image/name-tag.tar). Образ загружается обычным skopeo copy / docker load / ctr images import.
oxl build --profile prod # build/prod/<пакет>
oxl build --profile prod --image shop:0.3.0 # build/image/shop-0.3.0.tarЗапуск узла. Один бинарник на все роли. Роль, адрес и данные — флаги oxl run/бинарника или переменные окружения (§III.6):
| Флаг | Переменная | Назначение |
|---|---|---|
--role r1,r2 | OXL_ROLE | роли узла (иначе assign by … из cluster) |
--listen a | OXL_LISTEN | адрес межузлового протокола и gRPC |
--data-dir d | OXL_DATA_DIR | данные встроенного хранилища узла |
--profile p | OXL_PROFILE | профиль конфигурации (dev по умолчанию); в production dev-режимы запрещены |
--set K=V | APP_* | значение конфига |
--log-level l | OXL_LOG | уровень логов (info по умолчанию) |
Кластер защищён mTLS всегда: сертификаты выдаёт встроенный CA (oxl cluster: init, token create, node remove)
или внешний (OXL_CLUSTER_CERT/KEY/CA); oxl dev использует одноразовый dev-CA. В профиле production dev-CA и --insecure-dev
отключены (§13.1).
Kubernetes. seeds k8s(label: "app=shop") находит узлы по меткам; число реплик роли — replicas a..b; роль узла берётся
из метки пода oxl/role (assign by env("OXL_ROLE") else label("oxl/role") else auto). По SIGTERM/SIGINT узел дренирует запросы
(drain в defaults, по умолчанию 30 с; §2.4).
Наблюдаемость. Метрики, логи и трассы — часть языка и рантайма: OpenTelemetry (OTLP) выдаётся при OTEL_EXPORTER_OTLP_ENDPOINT;
@trace(sample: p), trace_sample в кластере; живой интерфейс — oxl inspect, профайлер — oxl prof,
запись и воспроизведение трафика — oxl trace --record и oxl replay
(руководство по наблюдаемости).
Обновление. Совместимость схем rpc и данных проверяется при сборке по oxl.schema.lock (SemVer: добавление полей — minor,
ломающее изменение — major); oxl publish не пропустит несовместимое. Миграции таблиц — oxl db.