prop/k8s
Graham McIntire 0bc8af22dd
fix(k8s): narrow backfill anti-affinity to tier=hot to unblock rollouts
Root cause of the deadlock prod hit today:

- prop-backfill's podAntiAffinity matched `app: prop`, which applies to
  backfill pods themselves as well as hot pods.
- The hot Deployment runs maxSurge=1/maxUnavailable=1 with HPA min 2 /
  max 5; when HPA was pegged at max and a rollout began, the old
  ReplicaSet's requiredDuringScheduling/IgnoredDuringExecution rule
  stayed pinned on every already-running hot pod.
- backfill's rule then excluded new hot pods from every physical host
  that had an app=prop pod on it, which was all of them, and the
  rollout couldn't progress because no old hot pod could come down
  until a new one went Ready first.

Narrowing the selector to `{app: prop, tier: hot}` means:
- backfill never constrains itself (it carries tier=backfill).
- Hot pods carry no anti-affinity of their own, so HPA can continue
  past the 4-physical-host count by co-locating when it has to.
- Backfill still lands on whichever physical host hot pods haven't
  filled up, which is the original intent.
2026-04-24 10:53:05 -05:00
..
deployment-backfill.yaml fix(k8s): narrow backfill anti-affinity to tier=hot to unblock rollouts 2026-04-24 10:53:05 -05:00
deployment-grid-rs.yaml chore: update prop image to git.mcintire.me/graham/prop-grid-rs:main-1777039918-d7d865d [skip ci] 2026-04-24 14:16:33 +00:00
deployment-hrrr-point-rs.yaml chore: update prop image to git.mcintire.me/graham/prop-grid-rs:main-1777039918-d7d865d [skip ci] 2026-04-24 14:16:33 +00:00
deployment.yaml chore: update prop image to git.mcintire.me/graham/prop:main-1777044777-080257f [skip ci] 2026-04-24 15:36:24 +00:00
flux.yaml feat(flux): add image-automation for prop-grid-rs 2026-04-19 16:24:33 -05:00
hpa.yaml infra(k8s): load-based HPAs, drop anti-affinity, retire talos5 2026-04-23 18:43:18 -05:00
kustomization.yaml infra(k8s): load-based HPAs, drop anti-affinity, retire talos5 2026-04-23 18:43:18 -05:00
metrics-service.yaml feat(k8s): NodePort service for external Prometheus scraping 2026-04-18 16:51:46 -05:00
namespace.yaml Add k8s manifests and Forgejo CI for cluster deployment 2026-04-06 09:25:24 -05:00
rbac.yaml Add Erlang clustering via libcluster and expose LiveDashboard 2026-04-06 09:46:48 -05:00
service.yaml fix(k8s): tier label isolates hot pods from backfill endpoints 2026-04-19 16:58:13 -05:00