IL-0512 MIT Open Learning · 2026-06-03kubernetesnetworkingaws
xPRO 의 쿠버네티스 APISIX 오리진 인증서가 갱신되지 못하고 만료되어 xpro.mit.edu 가 한 시간 동안 503 을 냈다
MIT Open Learning 의 OpenEdX 가 아닌 xPRO 애플리케이션은 공개 프런트엔드 도메인 xpro.mit.edu 와 백엔드 도메인 xpro-web.odl.mit.edu 를 따로 쓴다. xpro-web.odl.mit.edu 는 쿠버네티스 APISIX 백엔드 오리진이고, 그 인증서는 cert-manager 가 Route 53 의 DNS-01 검증으로 Let's Encrypt 에서 받는다. 그런데 Pulumi 코드가 Fastly TLS 구독에 Fastly 서비스의 도메인 전부를 넘겼고, Fastly 는 두 도메인 모두의 DNS 검증 레코드를 만들었다. 그 가운데 _acme-challenge.xpro-web.odl.mit.edu CNAME 이 같은 이름에 cert-manager 가 만들어야 하는 DNS-01 TXT 레코드를 막았다.
2026-05-04 에 시작된 갱신은 끝나지 못했고, ACME Order 는 오래되어 정리됐으며, 오리진 인증서는 2026-06-03 오후 3시 29분 EDT 에 만료됐다. 9분 뒤 CMS 와 본 사이트의 503 알림이 울렸다. Fastly 가 만료된 인증서 때문에 오리진에 연결하지 못해 고객이 xPRO 운영 사이트에 제대로 접속하지 못했다. 장애 등급은 SEV1 이었다. 오후 4시 8분 EDT 에 Rootly 장애가 열렸고, 오후 4시 16분에 재시작한 cert-manager 는 Let's Encrypt 에서 404: No order for ID 507326254665 를 받고 발급에 실패했다.
엔지니어가 오후 4시 27분 EDT 쯤 만료된 인증서와 오래된 ACME Order 를 찾았고, 오후 4시 38분 EDT 에 관련 cert-manager 인증서 자원을 손으로 다시 만들어 서비스를 되살렸다. 장애가 끝난 뒤의 검토에서 Fastly TLS 구독 설정이 결함으로 밝혀졌다. PR mitodl/ol-infrastructure#4713 이 Fastly TLS 구독의 도메인을 domains=[frontend_domain] 으로 바꿔 Fastly 는 xpro.mit.edu 의 공개 엣지 인증서만 관리하고 오리진 인증서는 cert-manager 가 맡게 했다. edxapp 과 xpro-openedx 는 바꿀 필요가 없었다.
- 심각도
- sev1
- 영향 범위
- The public xPRO site https://xpro.mit.edu and the xPRO production CMS returned 503 errors
- 영향 사용자
- xPRO customers could not reliably access the production site
- 지역
- –
- 감지까지
- 9m
- 복구까지
- 1h 9m
증상
2026-06-03 오후 3시 38분 EDT 에 xPRO 운영 CMS 와 xPRO 본 애플리케이션이 503 을 낸다는 알림이 함께 울렸다. 공개 사이트 https://xpro.mit.edu 에 고객이 제대로 접속하지 못했다.
Fastly 는 쿠버네티스 APISIX 백엔드 오리진인 xpro-web.odl.mit.edu 에 제대로 연결하지 못했다. 이 오리진의 인증서가 오후 3시 29분 EDT, 곧 19:29 UTC 에 만료됐기 때문이다.
인증서 갱신은 한 달 전부터 실패하고 있었다. 2026-05-04 에 cert-manager 가 30일 갱신 구간에 들어가 xpro-cert-2 를 만들었고, 여기에는 새 CertificateRequest, Order, DNS-01 Challenge 가 들어 있었다. 그러나 Challenge 가 끝나지 않았고 Let's Encrypt 는 ACME 인가를 비활성화했다. 5월 말과 6월 초 사이에 Challenge 는 만료된 채 남았고 Let's Encrypt 의 Order 는 오래되어 정리됐다.
장애 중 오후 4시 16분 EDT 에 cert-manager 파드가 재시작하며 오래된 Order 를 다시 평가했다. 2분 뒤 cert-manager 가 Let's Encrypt 에 물었다가 404: No order for ID 507326254665 를 받았고, 발급은 실패로 표시됐다.
오후 4시 27분 EDT 쯤 엔지니어가 쿠버네티스와 cert-manager 상태를 살펴 xpro-cert 가 만료됐고 ACME Order 가 오래되어 갱신을 끝낼 수 없다는 것을 찾았다. 이때는 cert-manager 의 ACME 갱신 실패로만 이해했고, Fastly 가 _acme-challenge.xpro-web.odl.mit.edu 레코드를 차지했다는 원인은 장애가 끝난 뒤의 검토에서 찾았다.
원인
- 촉발
- cert-manager 가 2026-05-04 에 xpro-web.odl.mit.edu 인증서의 갱신 구간에 들어가 DNS-01 검증을 시작했다. 이 검증이 Fastly 가 만든 _acme-challenge.xpro-web.odl.mit.edu CNAME 과 부딪혀 끝나지 못했고, 기존 오리진 인증서가 2026-06-03 오후 3시 29분 EDT 에 만료됐다.
감지
오후 3시 38분 EDT 에 xPRO 운영 CMS 와 xPRO 본 사이트가 503 을 낸다는 알림이 울렸다. 인증서가 만료된 지 9분 뒤였다.
조치
- 오래된 cert-manager 자원을 지우고 다시 만들어 cert-manager 가 백엔드 오리진의 새 인증서를 발급하게 했다. 이것으로 서비스가 돌아왔다.
후속 조치
- OpenEdX 가 아닌 xPRO 의 Fastly TLS 구독에서 백엔드 오리진 도메인을 뺐다.
- src/ol_infrastructure/applications/xpro 의 Production 스택에 Pulumi 변경을 배포했다.
- Fastly 의 검증 CNAME 을 뺀 뒤, xpro 네임스페이스에 있는 OpenEdX 가 아닌 xPRO 인증서를 cert-manager 로 직접 갱신하거나 cert-manager 가 저절로 갱신하게 했다.
- cert-manager 가 관리하는 오리진 도메인이 Fastly TLS 구독에 들어가지 못하게 막는 테스트나 정책 검사를 넣는 방안을 검토한다.
- cert-manager 의 CertificateRequest 와 Order 가 실패하면 더 일찍 알림을 보내, 인증서가 만료되기 전에 오래된 ACME 실패를 찾는 방안을 검토한다.
교훈
이 장애는 처음에 cert-manager 의 ACME 갱신 실패로 이해됐다. 그 이해는 맞았지만 모자랐고, 빠진 진단은 Fastly 가 cert-manager 의 몫인 백엔드 오리진 도메인의 검증까지 관리하도록 설정돼 있었다는 점이었다. 갱신 실패를 일찍 잡지 못한 것은 cert-manager 가 관리하는 백엔드 오리진 도메인이 Fastly TLS 구독에 들어가면 안 된다는 것을 검사하는 장치나 테스트가 없었기 때문이다.
팀은 TLS 인증서와 DNS 검증 레코드를 누가 맡는지 경계를 분명히 정하고 그 경계를 지키는 장치를 둬야 한다고 정리했다. 특히 TLS 자동화를 설정할 때 Fastly 의 공개 프런트엔드 도메인과 쿠버네티스 APISIX 백엔드 오리진 도메인을 바꿔 써도 되는 같은 서비스 도메인으로 다루면 안 된다.
출처
관련 사례
같은 원인 · 공통 DNS 서버와 레코드, CDN 과 엣지 네트워크
IL-0283Cloudflare 네트워크 전체에서 코어 프록시가 Bot Management 피처 파일을 읽다 실패해 사이트 방문자들이 HTTP 5xx 오류 페이지를 받았다Cloudflare · 2025같은 원인 · 공통 CDN 과 엣지 네트워크
같은 원인 · 공통 DNS 서버와 레코드
IL-0339Azure Front Door 와 Azure CDN 을 쓰는 Microsoft 서비스에 여러 리전에서 연결 오류, 타임아웃, 지연 급증이 났다Microsoft Azure · 2024같은 원인 · 공통 CDN 과 엣지 네트워크
IL-0533Azure China 의 핵심 시스템 도메인 chinacloudapp.cn 과 chinacloudsites.cn 의 이름 해석이 실패해 여러 서비스에 연결할 수 없었다Microsoft Azure · 2024같은 원인 · 공통 DNS 서버와 레코드
같은 원인 · 공통 DNS 서버와 레코드
IL-0459쿠버네티스 위 MediaWiki 가 TLS 종료에 엉뚱한 인증서를 써서 약 30분 동안 트래픽 1% 가 오류를 받았다Wikimedia Foundation · 2023같은 원인 · 공통 cert-manager
같은 원인 · 공통 DNS 서버와 레코드
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0512
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0512/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.