diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 9e6a40e..6e5f742 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -49,6 +49,7 @@ | workplan | NK-WP-0049 | active | — | workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md | | workplan | NK-WP-0050 | active | — | workplans/NK-WP-0050-playwright-consumer-registration.md | | workplan | NK-WP-0051 | finished | — | workplans/NK-WP-0051-sign-in-diagnosis.md | +| workplan | NK-WP-0052 | ready | — | workplans/NK-WP-0052-wave2-resource-right-sizing.md | | task | NK-WP-ADHOC-2026-07-02-T01 | done | — | workplans/ADHOC-2026-07-02.md | | task | NK-WP-ADHOC-2026-07-02-T02 | done | — | workplans/ADHOC-2026-07-02.md | | task | NK-WP-ADHOC-2026-08-14-T01 | done | — | workplans/ADHOC-2026-08-14.md | @@ -297,6 +298,7 @@ | task | NK-WP-0051-T04 | done | — | workplans/NK-WP-0051-sign-in-diagnosis.md | | task | NK-WP-0051-T05 | done | — | workplans/NK-WP-0051-sign-in-diagnosis.md | | task | NK-WP-0051-T06 | done | — | workplans/NK-WP-0051-sign-in-diagnosis.md | +| task | NK-WP-0052-T01 | wait | — | workplans/NK-WP-0052-wave2-resource-right-sizing.md | | intake | NK-IN-0001 | closed | blue | docs/intakes/activity-core-ops-sso-operators.md | | intake | NK-IN-0002 | closed | blue | docs/intakes/activity-core-ops-sso-operators.md | | intake | NET-IN-0001 | open | — | intakes/intakes.md | diff --git a/workplans/NK-WP-0052-wave2-resource-right-sizing.md b/workplans/NK-WP-0052-wave2-resource-right-sizing.md new file mode 100644 index 0000000..9f2af63 --- /dev/null +++ b/workplans/NK-WP-0052-wave2-resource-right-sizing.md @@ -0,0 +1,56 @@ +--- +id: NK-WP-0052 +type: workplan +title: "Wave-2 resource right-sizing from the 2026-10-21 allocation review" +domain: infotech +repo: net-kingdom +status: ready +flavor: implementation +owner: claude +topic_slug: netkingdom +created: "2026-10-21" +updated: "2026-10-21" +related: + - CUST-WP-0071 + - RESOURCE-WP-0008 +--- + +# NK-WP-0052 — Wave-2 resource right-sizing from the 2026-10-21 allocation review + +Receiving workplan in `net-kingdom` for the wave-2 request changes below. Login path for the whole fleet; apply one Deployment at a time and test sign-in after each. + +Origin: the 2026-10-21 node allocation review (`RESOURCE-WP-0008-T03`, feeding `CUST-WP-0071-T03`). Per the founder's 2026-10-21 delivery interview (`the-custodian/docs/decisions/2026-10-21-cust-wp-0071-delivery-interview.md`) the small adjustments form wave 2: one receiving task per owner repo, applied later in a batch. Applying wave 2 needs a separate founder approval, so every cluster-write task here is a human-gated `wait`. This file changes no manifest. + +## Apply the reviewed request changes + +```task +id: NK-WP-0052-T01 +status: wait +priority: medium +needs_human: true +blocking_reason: "Wave-2 cluster write; founder approval for wave 2 not yet given (2026-10-21 interview)" +``` + +Values are pod-aggregate figures from the budget file (7-day window ending 2026-10-21T06:08Z). Limits stay unchanged unless stated. + +| Workload (ns/name) | Pods | CPU request | CPU limit | CPU p95/peak 7d (m) | Memory request | Memory limit | Mem p95/peak (Mi) | Throttle | Action | +|---|---:|---:|---:|---:|---:|---:|---:|---:|---| +| `mfa/net-kingdom-sso-mfa` | 1 | 110m → **20m** | 1000m | 12.2/23.1 | 384Mi → **272Mi** | 896Mi | 225.6/225.8 | 0.049 | decrease + memory down | +| `sso/net-kingdom-sso-mfa` | 4 | 150m → **40m** | 1150m | 22.4/34.5 | 256Mi → **176Mi** | 640Mi | 140.5/179.1 | 0.537 | decrease + review CPU limit (throttled) + memory down | + +Source and container detail: + +- `mfa/net-kingdom-sso-mfa`: namespace `mfa`: Deployment `privacyidea`, container `privacyidea` (`sso-mfa/k8s/privacyidea/deployment.yaml`, 100m/256Mi) plus the remaining 10m/128Mi in the same pod (confirm which container) — split the 20m/272Mi proposal across them. Also ~5% throttling at the 500m container limit. +- `sso/net-kingdom-sso-mfa`: namespace `sso`, four Deployments: `keycape` (25m/32Mi, limit 200m, `sso-mfa/k8s/keycape/deployment.yaml`), `lldap` (50m/64Mi, limit 200m), `authelia` (50m/128Mi, limit 500m), `identity-provisioner` (25m/32Mi, limit 250m). 53.7% of CFS periods throttled on the login path: find the throttled container(s) and review their CPU limit independently of the request decrease. + +Evidence: resource-control `docs/evidence/2026-10-21-node-allocation-review/2026-10-21-node-budget.md` (+ `.json`, commit `3d9b1bd`). Rule: CPU = max(floor, p95x1.5, peakx0.5) rounded up to 5m; memory request = 7d p95 working set x1.15 (only when the change is at least 64Mi). + +Steps: + +1. Map the pod-aggregate proposal onto the named container(s) in the source file; where a workload has several containers or pods, split by the per-pod figures in `2026-10-21-workload-usage.json` and keep the sum at the proposed value. +2. Prepare the source change as a reviewed commit (no push, no sync) and record the before values here. +3. Apply only inside the batched wave-2 rollout, after founder approval, through the owner's normal deploy path (ArgoCD sync or documented helm/kubectl apply). + +Verification: `kubectl -n get pod -o jsonpath='{..resources}'` shows the new requests; pods Ready with no new restarts or OOMKilled over 24h; for CPU decreases the throttle ratio and request latency stay at or below the 7d baseline; node request total drops by the expected delta. + +Rollback: revert the source commit and re-sync/re-apply; the before values in the table above are the rollback target. Keep before/after `kubectl get -o yaml` captures as the receipt.