Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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).