IL-0089 UK Ministry of Justice · 2020-09-21kubernetesaws
2020년 9월 21일 팀은 테스트 클러스터를 지우려고 삭제 스크립트를 실행했다. kube 컨텍스트가 운영 클러스터 live-1 을 가리키고 있었고, 스크립트는 live-1 의 Cloud Platform 구성 요소 일부를 지웠다. 지워진 것은 기본 ingress-controller, prometheus-operator, logging, cert-manager, kiam, external-dns 였다. 인그레스 컨트롤러가 사라지자 일부 사용자가 Cloud Platform 의 서비스에 접속하지 못했다. Prometheus, Alertmanager, Grafana, Kibana 도 열리지 않았고 새 인증서도 만들 수 없었다.
팀은 기본 인그레스 컨트롤러부터 되살리기로 했다. 인그레스 컨트롤러는 새 NLB 주소로 Route53 레코드를 고치는 external-dns 에 의존하고, external-dns 는 kiam 에서 AWS AssumeRole 권한을 받는다. 그래서 ingress-controller, external-dns, kiam 세 가지를 되살렸고 서비스가 다시 올라오기 시작했다.
Formbuilder 서비스는 그 뒤에도 옛 NLB 를 가리켰다. Route53 TXT 레코드의 owner 값이 잘못 들어가 있어서 external-dns 가 A 레코드를 새 NLB 로 바꾸지 못했기 때문이다. 팀이 TXT 레코드의 owner 값을 고치자 external-dns 가 Formbuilder 레코드를 새 NLB 로 바꿨고 Formbuilder 가 돌아왔다. 나머지 구성 요소는 대상을 지정한 apply 로 되살렸다. 이어서 apply 파이프라인으로 환경 저장소의 인증서, ServiceMonitor, Prometheus 규칙을 모두 다시 만들었다. 수리까지 38분, 완전히 해결하기까지 3시간 14분이 걸렸다.
팀은 2020년 9월 21일 18:27 에 처음 장애를 알아챘다. Cloud Platform 에서 돌아가는 서비스 일부에 사용자가 접속하지 못했다.
Prometheus, Alertmanager, Grafana 에 접속할 수 없었고 Kibana 도 열리지 않았다. 새 인증서도 만들 수 없었다.
기본 인그레스 컨트롤러를 되살린 뒤에도 Formbuilder 서비스에는 여전히 접속할 수 없었다. Formbuilder 의 Route53 레코드가 인그레스를 교체하기 전의 옛 NLB 를 계속 가리키고 있었다.
원인 ? 운영 실수
팀은 18:27 에 처음 장애를 알아챘고, 13분 뒤인 18:40 에 장애를 선언했다.
–
–
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러