IL-0086 CircleCI · 2021-03-11kubernetesnetworking
2021년 3월 11일 15:35 EST 부터 1시간 54분 동안 CircleCI 에 장애가 있었다. 테스트 Kubernetes 클러스터에 한 업데이트가 의도치 않게 CircleCI 의 주 운영 클러스터에도 영향을 줬다. 이 배포는 운영과 테스트 클러스터 양쪽에서 Traefik 과 Calico 리소스를 지웠다.
Traefik 이 사라지자 CircleCI UI 와 runner.circleci.com 에 접속할 수 없었다. 조사 도중 Runner 잡도 돌지 않는다는 것이 드러났다. API 는 다른 인그레스를 쓰고 있어 영향이 없었고, Runner 밖의 빌드도 정상으로 돌았다.
엔지니어들은 DNS 와 AWS 쪽을 먼저 조사했지만 둘 다 원인이 아니었다. 이후 Traefik 문제를 찾아 빠르게 복구했지만 문제가 다 풀리지 않았다. 그때 Calico 와 Traefik 사이의 연결이 근본 원인이라는 것을 찾았고, Calico 를 복구하자 운영 클러스터의 파드가 다시 고객 요청을 처리했다. 상태 페이지는 22:33 UTC 에 해결을 알렸다.
2021년 3월 11일 15:35 EST 에 CircleCI UI 에 접속할 수 없게 됐다. API 는 별도 인그레스로 들어오기 때문에 계속 응답했고 빌드도 계속 돌았다.
상태 페이지는 20:45 UTC 에 UI 장애를 조사 중이라고 처음 알렸다. 21:34 UTC 에는 CircleCI Runner 잡도 돌지 않는다는 것이 추가로 드러났다. Runner 밖의 빌드는 정상으로 돌았다.
엔지니어들은 스테이징 배포가 운영 클러스터에 영향을 줬다는 것을 바로 알아채지 못했다. 그래서 DNS 와 AWS 쪽을 먼저 조사했지만 둘 다 원인이 아니었다. 더 파고들어 Traefik 문제를 찾아 복구했지만 그것만으로는 문제가 다 풀리지 않았다.
수정을 적용한 뒤 CircleCI 는 문제가 DNS 와 얽혀 있다고 안내했다. 그래서 일부 고객은 브라우저의 DNS 캐시를 지워야 할 수 있고, 지역에 따라 반영이 조금 늦을 수 있다고 했다.
알림을 받은 엔지니어들이 조사를 시작했다. 상태 페이지에는 20:45 UTC 에 첫 공지가 올라왔다.
테스트 클러스터용 배포가 운영 클러스터의 리소스를 건드릴 수 있으면 스테이징 작업이 곧 운영 장애가 된다. 스테이징 배포가 운영에 영향을 줬다는 사실이 바로 보이지 않아 조사가 DNS 와 AWS 에서 시작됐다. Traefik 만 되살려서는 복구되지 않았고 Calico 와 Traefik 의 관계까지 알아야 했다. CircleCI 는 Kubernetes 네트워크의 모든 계층을 담은 문서와 런북이 필요하다고 정리했다.
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러