Cases2 cases
1 to 2 of 2
- Symptoms
At 3:38 PM EDT on 3 June 2026, alerts fired because both the xPRO production CMS and the main xPRO site at https://xpro.mit.edu were returning 503 errors. Fastly, in front of the site, could not connect to the Kubernetes/APISIX origin, because the origin certificate for xpro-web.odl.mit.edu had expired at 3:29 PM EDT.
- Trigger
The origin certificate xpro-cert for xpro-web.odl.mit.edu, issued on 2026-03-05 with a 90-day validity period, expired at 3:29 PM EDT on 3 June 2026.
- Root cause
- Component
- Contributing factor
- Detection
Alerts for the xPRO production CMS and the main xPRO site fired at 3:38 PM EDT on the 503 errors, and a Rootly incident was created at 4:08 PM EDT.
- Remediation
- Deleted and recreated the stale cert-manager certificate resources so that cert-manager issued a fresh origin certificate
- Action items
- Remove the backend origin domain from the non-OpenEdX xPRO Fastly TLS subscription, so Fastly manages only xpro.mit.edu
- Deploy the Pulumi update for the xPRO application in Production
- Trigger cert-manager renewal of the xPRO certificate after the conflicting Fastly validation CNAME is removed
- Consider tests or policy checks that keep cert-manager-managed origin domains out of Fastly TLS subscriptions
- Consider alerting earlier on failed cert-manager CertificateRequests and Orders, so stale ACME failures are found before the certificate expires
- Lessons
Reading the outage as a failed cert-manager ACME renewal was true but incomplete; the missing part was that Fastly had been set to manage validation for a backend origin domain that belonged to cert-manager. The team concluded that TLS certificates and DNS validation records need guardrails around ownership, and that public Fastly frontend domains and Kubernetes/APISIX origin domains must not be treated as interchangeable service domains in TLS automation.
IL-0522An ingress-nginx chart upgrade deleted the jenkins.io Ingress and Fastly served HTTP/503 errors for hoursJenkins project2021- Symptoms
At 11:32 UTC on 18 November 2021, a user reported in the jenkinsci/jenkins Gitter channel that https://www.jenkins.io/doc/pipeline/steps/ was answering HTTP/503 errors with the message "Guru meditation" from Fastly's varnish.
- Trigger
The ingress-nginx Helm chart was upgraded from 4.0.6 to 4.0.8 at 10:42 UTC, and the new chart added an admission webhook rule that forbids Nginx configuration blocks in Ingress annotations.
- Root cause
- Component
- Contributing factor
- Detection
A user reported in the jenkinsci/jenkins Gitter channel at 11:32 UTC that a jenkins.io page answered HTTP/503 errors, and status.jenkins.io reported the incident at 11:49 UTC.
- Remediation
- Disabled the automated systems, rolled the ingress-nginx chart back to 4.0.6 and deleted the admission webhook by hand
- Removed the forbidden annotations from the jenkins.io configuration
- Upgraded the jenkins.io Helm chart to the last version known to work with ingress-nginx 4.0.8
- Redeployed the jenkins.io Helm chart through the automated system and told Fastly to drop all cached pages
- Action items
- Always read the changelog in depth when updating the ingress controllers, with two people pairing in real time
- Add custom Datadog monitoring for www.origin.jenkins.io so that such an outage is detected
- Make the monitor send the Host header www.jenkins.io so it is not redirected to Fastly
- Check a set of pages, such as the pipeline steps page, not only the front page
- Consider an ephemeral k3s end-to-end test before deploying to production
- Lessons
Trusting a patch version of a Helm chart for the Ingress controller without reading its changelog in depth let a new admission rule remove the jenkins.io Ingress in production. Without monitoring on origin.jenkins.io, a user found the outage. A complete staging cluster with the same DNS setup would have caught the problem before production.
These 2 cases involve CDN and edge network and Admission webhook. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause2
Configuration change1 case
- Contributing factor
- Organisation
Breaking change in an upgrade1 case
- Contributing factor
- Organisation