mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 07:41:27 +00:00
Rewrites AUTOSCALING.md — it was generic Cloudflare/Swarm advice that predated the platform autoscaler. Now documents the real /scaling API, per-service policy fields, manual scale, and the in-memory caveat. Adds OPERATIONS.md covering cron jobs, exec console, managed databases, preview environments (bookkeeping-only caveat), security scans (heuristic, not Trivy), HA, and node-agent onboarding. Authored By: TDvorak <[email protected]> Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# Autoscaling
|
||
|
||
Containr has a built-in autoscaler that adjusts service replica counts against
|
||
CPU/memory targets. Policies and scale events are held in backend memory —
|
||
they do not survive a backend restart (tracked on the roadmap).
|
||
|
||
## Per-service policy
|
||
|
||
Open a service → **Scaling** section. Set:
|
||
|
||
| Field | Meaning |
|
||
|-------|---------|
|
||
| Min replicas | Lower bound, ≥1 |
|
||
| Max replicas | Upper bound |
|
||
| Target CPU % | Scale up when average CPU exceeds this |
|
||
| Target memory % | Scale up when average memory exceeds this |
|
||
| Enabled | Whether the autoscaler evaluates this service |
|
||
|
||
Creating a policy registers the service with the autoscaler and initializes
|
||
its scaling state at `min_replicas`.
|
||
|
||
## Manual scale
|
||
|
||
The Scaling section also has a replica input + **Scale** button for an
|
||
immediate change, clamped to the policy bounds when a policy exists
|
||
(1–20 otherwise). Scaling dispatches to the node scheduler — without
|
||
registered node agents it fails with `no ready nodes available`.
|
||
|
||
## API
|
||
|
||
```
|
||
GET /api/v1/scaling/policies/:serviceId
|
||
POST /api/v1/scaling/policies {service_id, min_replicas, max_replicas,
|
||
target_cpu, target_memory, enabled}
|
||
PUT /api/v1/scaling/policies/:serviceId
|
||
DELETE /api/v1/scaling/policies/:serviceId (disables, does not remove)
|
||
GET /api/v1/scaling/services/:serviceId (current/desired replicas)
|
||
POST /api/v1/scaling/services/:serviceId/scale {replicas, reason}
|
||
GET /api/v1/scaling/services/:serviceId/history
|
||
GET /api/v1/scaling/status | /metrics | /events
|
||
```
|
||
|
||
## Traffic distribution
|
||
|
||
Replicas are scheduled across registered node agents. In front of them you
|
||
still want a load balancer — Traefik (bundled) discovers containers via
|
||
labels, or Cloudflare Tunnel can front the platform for external traffic.
|
||
Neither provides autoscaling itself; they distribute traffic to whatever
|
||
replicas the autoscaler has placed.
|