IL-0106 DFDS · 2021-09-06kubernetesawsnetworking
DFDS 는 Kubernetes 의 인그레스 컨트롤러로 Traefik v2 를 쓰고 있었다. 2021-09-01 에 형식이 잘못된 IngressRoute 매니페스트가 클러스터에 적용됐고, Traefik v2 의 공식 API 스키마는 이 적용을 막지 못했다. 이 매니페스트가 2.5 미만 Traefik v2 의 버그를 건드려 Traefik 이 인그레스 트래픽을 받지도 라우팅하지도 못하게 됐다. 다만 이 버그는 Traefik v2 파드가 모두 재시작된 뒤에야 나타나서 닷새 동안 드러나지 않았다.
2021-09-06 아침 자동 노드 롤오버가 돈 뒤 모든 서비스가 404 를 냈다. 팀은 ALB 대상이 unhealthy 인 것을 보고 헬스체크 경로를 바꿨지만 404 는 그대로였다. 08:50 에 주 인그레스 컨트롤러를 Traefik v1 으로 되돌리기로 했고, 09:00 에 손으로 롤백했다. 09:08 에 인그레스 트래픽이 정상으로 돌아왔다.
09:10 에 잘못된 IngressRoute 를 손으로 지우면서 근본 원인을 찾았고 Traefik v2 버그도 확인했다. 감지까지 5분, 복구까지 68분이 걸렸다.
2021-09-06 08:00 UTC 에 Kubernetes 의 모든 서비스가 404 를 내기 시작했다. 30분 전인 07:30 에는 노드를 자동으로 교체하는 롤오버가 시작됐다.
팀은 08:05 에 원인 조사를 시작했고, 08:10 에 ALB 대상이 unhealthy 로 나타난 것을 봤다. 헬스체크 경로를 바꾸자 08:15 에 ALB 대상은 healthy 로 돌아왔지만, 08:20 에도 모든 서비스가 여전히 404 를 냈다.
Traefik v2 가 오류를 드러내지 않고 실패하는 바람에 조사는 ALB 문제 쪽으로 잘못 흘렀다. 08:30 까지 여러 가지를 살폈지만 결론이 나지 않았다.
08:00 UTC 에 모든 서비스가 404 를 내기 시작했고 08:05 에 원인 조사를 시작했다. 감지까지 5분이 걸렸다.
Traefik v2 는 오류를 드러내지 않고 실패해서 조사를 ALB 쪽으로 잘못 이끌었다. 공식 API 스키마도 잘못된 매니페스트 적용을 막지 못했다. 팀은 대응 과정에서 장애 관리자를 정했다면 도움이 됐을 것으로 봤다. 그리고 워룸 회의를 녹화하고, 대응에 참여하지 않는 사람은 글로만 제안하고, 일지를 남기자고 정리했다. 대응 초반에 각자의 생각과 직감을 짧게 나누는 시간도 갖자고 했다.
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 인그레스 컨트롤러