Incident Library

IL-0522 Jenkins project · 2021-11-18kubernetesnetworking

ingress-nginx Helm 차트 패치 업그레이드 뒤 jenkins.io 의 Ingress 가 지워져 사이트가 HTTP/503 을 냄

2021년 11월 18일 10:42 UTC 에 Jenkins 인프라 팀은 쿠버네티스 클러스터의 nginx Helm 차트를 패치 버전인 4.0.6 에서 4.0.8 로 올렸다. 새 버전은 Nginx 설정 블록이 든 Ingress 어노테이션을 막는 어드미션 웹훅 규칙을 만들었고, 쿠버네티스는 이 규칙에 맞지 않는 jenkins.io 의 Ingress 규칙을 지웠다. 지워진 Ingress 규칙은 jenkins.io 와 함께 www.jenkins.io, origin.jenkins.io, www.origin.jenkins.io 도 받고 있었다. 원본이 HTTP/404 를 내자 11:07 UTC 부터 Fastly 가 jenkins.io 페이지 일부를 캐시에서 내렸고, 그 페이지들은 HTTP/503 이 됐다. 11:32 UTC 에 사용자가 Gitter 에 신고했고 11:49 UTC 에 status.jenkins.io 에 장애 공지가 올라갔다.

13:40 UTC 에 팀은 자동화 시스템을 모두 멈춘 채 nginx Helm 차트를 4.0.6 으로 롤백하고 어드미션 웹훅 구성을 손으로 지워 jenkins.io 를 되살렸다. 15:30 UTC 에 jenkins.io 설정의 첫 번째 수정을 적용한 뒤 Nginx Helm 차트를 다시 4.0.8 로 배포했는데, 이 배포가 두 번째 장애를 냈다. 17:11 UTC 에 필요한 수정을 모두 적용하자 자동화 시스템이 jenkins.io Helm 차트를 다시 배포해 사이트가 돌아왔고, 팀은 Fastly 에 모든 페이지의 캐시를 비우게 했다.

팀은 두 가지가 잘못됐다고 밝혔다. 인그레스 컨트롤러라는 민감한 구성 요소의 Helm 차트를 패치 버전이라고 믿고 변경 기록을 깊이 확인하지 않았고, origin.jenkins.io 에는 오류가 보일 때 알려 줄 모니터링이 없었다.

심각도
–
영향 범위
jenkins.io (also www.jenkins.io) was unavailable and answered HTTP/503 from 11:07 to 13:40 UTC and from 15:30 to 17:11 UTC on 18 November 2021
영향 사용자
–
지역
–
감지까지
25m
복구까지
6h 4m

증상

2021년 11월 18일 11:32 UTC, 한 사용자가 Gitter 채널 jenkinsci/jenkins 에 https://www.jenkins.io/doc/pipeline/steps/ 가 HTTP/503 오류를 낸다고 알렸다. 화면에는 Fastly 의 Varnish 가 내는 "Guru meditation" 메시지가 떴다.

쿠버네티스가 jenkins.io, www.jenkins.io, origin.jenkins.io, www.origin.jenkins.io 를 받는 Ingress 규칙을 지운 뒤로, 클러스터의 원본 페이지는 Fastly 에 HTTP/404 를 냈다. 11:07 UTC 부터 Fastly 는 클러스터에서 페이지를 새로 받지 못해 jenkins.io 페이지 일부를 캐시에서 내리기 시작했고, 그 페이지들이 HTTP/503 으로 바뀌었다.

장애는 두 번 났다. 11:07 UTC 부터 13:40 UTC 까지 2시간 37분 동안 사이트가 멈췄고, 수동 조치로 되살린 뒤 15:30 UTC 에 Nginx Helm 차트를 다시 4.0.8 로 배포하자 17:11 UTC 까지 1시간 41분 동안 다시 멈췄다.

증상 서비스 중단리소스 삭제

원인

촉발
2021년 11월 18일 10:42 UTC 에 nginx Helm 차트를 패치 버전인 4.0.6 에서 4.0.8 로 올리는 배포가 성공했다. 새 버전은 `{}` 같은 Nginx 설정 블록이 든 Ingress 어노테이션을 막는 어드미션 웹훅 규칙을 새로 만들었다.

감지

장애가 시작되고 25분 뒤인 11:32 UTC 에 사용자가 Gitter 채널 jenkinsci/jenkins 에 신고해 알았다. origin.jenkins.io 에는 오류를 알릴 모니터링이 없었다.

조치

후속 조치

교훈

인그레스 컨트롤러처럼 민감한 구성 요소는 패치 버전 업그레이드라도 변경 기록을 깊이 확인해야 한다. 원본 호스트인 origin.jenkins.io 를 직접 지켜보는 모니터링이 없으면 CDN 뒤에서 난 오류를 사용자 신고로 처음 알게 된다.

출처

참고 문서

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 인그레스 컨트롤러, 어드미션 웹훅, Helm. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.