IL-0107 DFDS · 2022-08-03kubernetes
2022년 8월 3일 DFDS 의 운영 쿠버네티스 클러스터 하나에서 예외 처리된 네임스페이스를 뺀 모든 곳의 Service 리소스 생성, 수정, 삭제가 막혔다. 정책 엔진 Kyverno 가 크래시 루프에 빠져 웹훅이 응답하지 않았기 때문이다. Kyverno 는 코드 동결 때문에 최신 버전으로 올리지 못한 상태였다. 문제는 DFDS 가 아무것도 하지 않았는데 서드파티 애플리케이션의 인증서 체인이 만료되면서 시작됐다.
Kyverno ClusterPolicy 의 failurePolicy 가 기본값 fail 이어서, 웹훅이 응답하지 않으면 요청이 거부됐다. 이 값이 ignore 였다면 장애는 일어나지 않았다. Kyverno 는 모니터링도 갖추지 않은 채 너무 일찍 운영에 들어갔다. 운영에 넣기 전의 소통과 조율도 부족했다. 문제가 제기되긴 했지만 'Ops Day to Day' 보드에는 올라가지 않았다. Kyverno 가 아직 성숙한 프로젝트가 아니라는 조짐도 장애에 영향을 준 요인으로 꼽혔다.
팀은 샌드박스에서 문제를 재현하고, Kyverno 를 더 새 Helm 차트 버전으로 올리는 수정을 먼저 샌드박스에 적용했다. 13:06 UTC 에 같은 수정을 운영 클러스터에 배포했고, 13:25 UTC 에 사용자 팀이 해결됐다고 알려 왔다. 탐지까지 12분, 복구까지 88분이 걸렸다.
2022년 8월 3일 11:38 UTC 에 한 사용자 팀이 해당 쿠버네티스 클러스터에 Service 리소스를 적용하는 데 문제가 있다고 알려 왔다.
예외 처리된 네임스페이스를 뺀 모든 네임스페이스에서 Service 리소스를 만들거나 고치거나 지울 수 없었다. 웹훅이 응답하지 않았고, 웹훅 요청을 처리하는 Kyverno 는 크래시 루프에 빠져 있었다.
팀은 11:50 UTC 에 조사를 시작해 12:08 UTC 에 원인을 찾았다. 12:18 UTC 에는 쿠버네티스 샌드박스에서 같은 문제를 재현했다.
증상 ? 배포 실패컨테이너 재시작 반복
원인 ? 인증서·자격 증명 만료
11:38 UTC 에 한 사용자 팀이 클러스터에 Service 리소스를 적용하지 못한다고 알려 오면서 장애가 드러났다. 팀은 11:50 UTC 에 조사를 시작했고, 보고서는 탐지까지 걸린 시간을 12분으로 적었다.
운영 문제는 처음부터 'Ops Day to Day' 보드에 올려야 한다.
–