IL-0513 Python Software Foundation · 2022-10-24kubernetesawsnetworking
쿠버네티스 노드 순차 재시작 중 Ingress 가 관리하는 ELB 의 HTTPS 리스너가 꺼져 PyPI 백엔드에 HTTPS 로 닿지 못했다
PyPI 서비스는 쿠버네티스 클러스터에서 Deployment 로 돌고, AWS Elastic Load Balancer 통합을 쓰는 Ingress 로 외부에 노출된다. 이 로드 밸런서가 쓰는 TLS 인증서는 Amazon Certificate Manager, 곧 ACM 이 관리한다. 클러스터를 처음 배포할 때 Ingress 가 관리하는 ELB 는 기존 ACM 인증서를 쓰도록 설정됐다. 지난번 순차 업그레이드 뒤에 PyPI 의 Ingress 에 호스트 이름이 하나 더 필요해졌고, PyPI 관리자들이 그 이름을 담은 새 ACM 인증서를 만들어 ELB 가 새 인증서를 쓰도록 바꿨다. 이 변경은 Ingress 설정에는 반영되지 않았다.
2022-10-24 정기 유지 보수로 모든 노드를 순차 재시작하던 중, 새 쿠버네티스 API 서버가 올라오며 Ingress 설정을 다시 검증하고 갱신했다. 새 API 서버는 Ingress 설정이 가리키는 이전 ACM 인증서를 찾지 못했고, PyPI 와 관련 서비스를 내보내는 Ingress 의 HTTPS 리스너를 껐다. 14:43 UTC 부터 15:03 UTC 까지 PyPI 백엔드에 HTTPS 로 닿을 수 없어 CDN 의 페이지 가져오기, uploads.pypi.org 업로드, 옛 파일 리디렉션 서비스가 멈췄다. 원인을 찾은 PyPI 관리자들이 Ingress 설정을 새 ACM 인증서로 바꾸자 쿠버네티스가 HTTPS 리스너를 되살렸고 모든 서비스가 돌아왔다.
- 심각도
- –
- 영향 범위
- PyPI backends over HTTPS: CDN page fetches, uploads to uploads.pypi.org and the legacy file redirect service
- 영향 사용자
- –
- 지역
- –
- 감지까지
- –
- 복구까지
- 20m
증상
2022-10-24 14:43 UTC 부터 15:03 UTC 까지 PyPI 백엔드에 HTTPS 로 접속할 수 없었다. CDN 이 페이지를 가져오지 못했고, uploads.pypi.org 로 올리기가 막혔으며, 옛 파일 리디렉션 서비스도 끊겼다.
상태 페이지는 14:51 UTC 에 PyPI 와 관련 서비스가 도는 백엔드에 큰 장애가 났다고 알렸다. 영향을 받은 항목은 pypi.org 의 Backends, files.pythonhosted.org 의 Redirects 와 Redirects Backends 였다.
장애는 정기 유지 보수로 클러스터의 모든 노드를 순차 재시작하던 중에 났다. 새 쿠버네티스 API 서버가 올라오면서 PyPI 와 관련 서비스를 내보내는 Ingress 에서 ELB 의 HTTPS 리스너를 껐다.
증상 서비스 중단
원인
원인 설정 변경
- 촉발
- 업그레이드와 새 설정을 모든 노드에 나눠 주려고 쿠버네티스 클러스터의 모든 노드를 순차 재시작했다. 새 쿠버네티스 API 서버가 올라오면서 기존에 정의한 Ingress 설정을 다시 검증하고 갱신했다.
감지
–
조치
- PyPI 관리자들이 Ingress 설정을 새 ACM TLS 인증서를 가리키도록 고쳤다. 쿠버네티스가 Ingress 가 관리하는 ELB 에 HTTPS 리스너를 되살렸고 모든 서비스에 다시 접속할 수 있게 됐다.
후속 조치
- PyPI Ingress 설정에 필요한 ACM TLS 인증서의 호스트 이름을 AWS 콘솔에서 손으로 관리하지 않고 쿠버네티스 자원으로 관리할 방법을 찾는다.
교훈
자원을 모두 쿠버네티스 API 로 관리하면 원하는 상태와 실제 상태가 어긋나는 일이 줄고, 그런 어긋남이 다음 유지 보수 때 장애로 드러날 가능성도 줄어든다고 PSF 인프라 팀은 정리했다.
출처
- https://status.python.org/incidents/77qzc7qsb5wb · official-status · 보관본
관련 사례
같은 원인 · 공통 인그레스 컨트롤러, 클라우드 로드 밸런서
IL-0111메인 인그레스 컨트롤러를 Traefik v2 로 바꾸자 X-Forwarded 헤더가 전달되지 않아 Okta 로그인이 깨졌고, DFDS 온라인 예약이 한 시간 넘게 멈췄다DFDS · 2021같은 원인 · 공통 인그레스 컨트롤러, 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
IL-0192Crossplane 컴포지션의 병합 정책 변경이 Service 타입을 ClusterIP 로 바꿔 클라우드 로드 밸런서가 지워지고 Grafana Cloud 서비스의 약 25%가 끊겼다.Grafana Labs · 2025같은 원인 · 공통 클라우드 로드 밸런서
IL-0473Azure 공개 쿠버네티스 클러스터의 노드 풀이 모두 지워지고 다시 만들어지지 않아 Jenkins 인프라 서비스가 4시간 넘게 멈췄다Jenkins project · 2023같은 원인 · 공통 클라우드 로드 밸런서
IL-0208GitLab Helm 차트 업그레이드가 Service 와 Deployment 의 포트 이름을 바꿔 GCP 로드 밸런서가 다시 구성되는 동안 GitLab.com 요청이 느려지고 50x 오류가 났다GitLab · 2022같은 원인 · 공통 클라우드 로드 밸런서
IL-0442운영 중인 KEEL 쿠버네티스 클러스터에서 priority 0 파드가 한꺼번에 선점되어 istio-ingressgateway 를 비롯한 파드가 재시작되고 서비스가 잠시 끊겼다LIFULL · 2021같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
IL-0052인증 없이 인터넷에 열린 Weave Scope 대시보드를 통해 암호화폐 채굴기가 개발 클러스터와 스테이징 클러스터의 모든 노드에서 돌았다.JW Player · 2019같은 원인 · 공통 클라우드 로드 밸런서
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0513
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0513/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.