Container Deployment Quickstart
Операторский quickstart для image-first запуска AngaraBase:
- локальный
docker runс cgroup-aware startup probe; - минимальный k8s deployment (
single-node, без HA); - smoke-проверки readiness и базовой диагностики.
0) 30-second evaluator path (image-only)
Если нужен быстрый evaluator/DPP smoke без Rust toolchain:
tools/compat_suite/image_smoke.sh
Скрипт поднимает контейнер из канонического Dockerfile, ждёт /health/ready,
проверяет startup log (deployment probe resolved effective budgets, cgroup_version)
и наличие probe-метрик в /metrics.
1) Local container smoke (docker run)
Сборка образа:
docker build -t angarabase:local .
Запуск с memory limit (контракт probe-а):
docker run --rm --name angarabase-local \
--memory=512m \
-e ANGARABASE_DEPLOYMENT_PROFILE=container \
-p 5152:5152 \
-p 9898:9898 \
angarabase:local
Ожидаемый признак в логах:
- есть строка
deployment probe resolved effective budgets; deployment_profile=container;memory_source/cpu_sourceотражаютcgroup_v1илиcgroup_v2(либоproc_fallbackсfallback_reason).
Проверка readiness в контейнере:
curl -fsS http://127.0.0.1:9898/health/ready
HEALTHCHECK контейнера использует этот же endpoint, поэтому становится green только
после прохождения health_readiness_reason_v0().
Проверка метрик:
curl -fsS http://127.0.0.1:9898/metrics | rg "deployment_probe|deployment_profile"
2) Resource-limit examples
CPU + memory cap:
docker run --rm --name angarabase-capped \
--memory=1g \
--cpus=1.5 \
-e ANGARABASE_DEPLOYMENT_PROFILE=container \
-p 5152:5152 \
-p 9898:9898 \
angarabase:local
Explicit override (probe не должен перезаписать):
docker run --rm \
--memory=512m \
-e ANGARABASE_DEPLOYMENT_PROFILE=container \
-e ANGARABASE_MEMORY_BUDGET=256MB \
-e ANGARABASE_CPU_BUDGET=1000m \
-p 5152:5152 \
-p 9898:9898 \
angarabase:local
Ожидаемо: в метриках/логах источник budget-а становится config_override.
3) Kubernetes minimal smoke
Применение манифестов:
kubectl apply -f tools/deploy/kubernetes/minimal/namespace.yaml
kubectl apply -f tools/deploy/kubernetes/minimal/configmap.yaml
kubectl apply -f tools/deploy/kubernetes/minimal/service.yaml
kubectl apply -f tools/deploy/kubernetes/minimal/statefulset.yaml
Проверка:
kubectl -n angarabase get pods
kubectl -n angarabase get svc angarabase
kubectl -n angarabase logs statefulset/angarabase
kubectl -n angarabase get statefulset angarabase -o yaml | rg "resources:|health/"
Важно: в statefulset.yaml заданы resources.requests/limits. Если убрать лимиты,
probe может увидеть “unlimited” и перейти на host-level fallback для budget-ов.
Удаление:
kubectl delete namespace angarabase
4) Diagnostics and backup entrypoints
Для packaged/operator path используйте angara-cli вместо прямых вызовов tools/...:
angara-cli diagnostics bundle --root artifacts/diagnostics/container-smoke --json
angara-cli backup full --config /etc/angarabase/angarabase.conf --out /tmp/base_full.abk
Связанные runbooks:
DPP alignment:
- safety rails по ресурсным лимитам и fail-closed режиму см.
business_strategy/PILOT_CHECKLIST.md(§5 и §6).