Skip to content

demo-intelligence: make OOM demo stay Degraded and resettable - #210

Merged
dhpup merged 1 commit into
mainfrom
demo-intelligence/stable-oom-demo
Nov 3, 2026
Merged

dhpup merged 1 commit into
mainfrom
demo-intelligence/stable-oom-demo

Conversation

@dhpup

@dhpup dhpup commented Nov 3, 2026

Copy link
Copy Markdown
Member

Problem

The demo-intelligence-prod-oom app flapped between Degraded and Progressing (and sometimes Healthy) every 10–20s. The AI-SRE agent was triggered on Degraded, then saw Progressing or Healthy at its 30s check and closed the incident while the pod kept crashing.

Root cause: Argo CD only marks a Deployment Degraded on ProgressDeadlineExceeded. oom-demo had no readiness probe, so every container restart briefly marked the pod Ready. Kubernetes counted that as progress and restarted the 10s deadline.

Changes

  • oom-demo/manifest.yaml: add a readiness probe (initialDelaySeconds: 15) that can't pass before the OOM kill, and raise progressDeadlineSeconds from 10 to 30. The broken pod never becomes Ready, so the app stays Degraded. Once memory is raised, the probe passes and the app goes Healthy.
  • runbooks/oom.md:
    • Require approval for every change. The old runbook required approval in one section and said to apply the fix "automatically" in another.
    • Patch only the live resource: no Git commits, syncs or promotions.
    • Close only after 60s Healthy with no new restarts.
  • README.md: document the break → fix → reset flow.

Demo flow

  1. Sync demo-intelligence-prod-oom: the pod is OOMKilled and the app stays Degraded.
  2. The agent proposes +50Mi (128Mi → 178Mi); approve it. The app goes Healthy and shows OutOfSync because the change is live-only.
  3. Sync again to reset to 128Mi for the next demo.

Notes

  • The runbook is configured in the Akuity UI, so it has to be pasted in there by hand. The Slack channel is still a placeholder.
  • Not yet tested against the cluster. The probe runs true in polinux/stress, which should exist if the image is Alpine-based. Do one dry run after merge.
  • Merging changes the pod template, so the first sync starts a new rollout.

🤖 Generated with Claude Code

The oom-demo Deployment flapped between Degraded and Progressing: with no
readiness probe, every restart briefly marked the pod Ready, which reset the
10s progress deadline. Add a readiness probe that cannot pass before the
OOM kill and raise progressDeadlineSeconds to 30, so the app stays Degraded
until memory is raised.

Rewrite the OOM runbook so it consistently requires approval, patches only
the live resource (Git keeps the broken state, so a sync resets the demo),
and closes only after 60s Healthy with no new restarts. Document the
break/fix/reset flow in the README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dhpup
dhpup merged commit 07ce4a5 into main Nov 3, 2026
3 checks passed
@dhpup
dhpup deleted the demo-intelligence/stable-oom-demo branch November 3, 2026 03:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant